浏览代码

苏州分公司调整及新增红字发票

sangwenwei 5 月之前
父节点
当前提交
fcd1362a51
共有 27 个文件被更改,包括 686 次插入193 次删除
  1. 8 1
      src/api/cw/invoice/CwFinanceInvoiceService.js
  2. 7 0
      src/api/sys/officeService.js
  3. 7 0
      src/api/sys/userService.js
  4. 2 2
      src/components/userSelect/UserSelectDialog.vue
  5. 2 2
      src/components/userSelectForQualification/UserSelectDialog.vue
  6. 3 1
      src/views/cw/fillingbatch/FillingbatchDia.vue
  7. 8 2
      src/views/cw/fillingbatch/FillingbatchForm.vue
  8. 103 14
      src/views/cw/invoice/InvoiceForm.vue
  9. 117 18
      src/views/cw/invoice/InvoiceFormTask.vue
  10. 8 7
      src/views/cw/invoice/InvoiceList.vue
  11. 171 0
      src/views/cw/invoice/WorkInvoiceChooseRadio.vue
  12. 43 23
      src/views/cw/projectRecords/ProjectRecordsAddForm.vue
  13. 34 20
      src/views/cw/projectRecords/ProjectRecordsAddForm2.vue
  14. 25 20
      src/views/cw/projectRecords/ProjectRecordsForm.vue
  15. 26 22
      src/views/cw/projectRecords/ProjectRecordsForm2.vue
  16. 1 1
      src/views/cw/reimbursementApproval/info/InfoList.vue
  17. 65 39
      src/views/cw/reportManagement/ProjectRecordsInfoForm.vue
  18. 2 2
      src/views/cw/reportManagement/ReportManagementList.vue
  19. 1 1
      src/views/cw/reportManagement/ReportManagementList2.vue
  20. 4 2
      src/views/cw/reportManagement/reportReview/ReportReviewForm.vue
  21. 1 1
      src/views/cw/workClientInfo/WorkClientAddForm.vue
  22. 2 2
      src/views/cw/workClientInfo/clientUserSelect/UserSelectDialog.vue
  23. 2 2
      src/views/cw/workContract/ContractNameForm.vue
  24. 2 2
      src/views/cw/workContract/ContractRegistration.vue
  25. 14 4
      src/views/cw/workContract/contractRegisitionAddForm/ContractAddForm.vue
  26. 13 2
      src/views/dashboard/widgets/components/MyNoticePageList.vue
  27. 15 3
      src/views/flowable/task/NoticePageList.vue

+ 8 - 1
src/api/cw/invoice/CwFinanceInvoiceService.js

@@ -123,7 +123,14 @@ export default {
 			params: {id: param}
 		})
 
-	}
+	},
+	redList: function (params) {
+		return request({
+			url: prefix + "/cw_finance/invoice/redList",
+			method: "get",
+			params: params,
+		});
+	},
 
 
 

+ 7 - 0
src/api/sys/officeService.js

@@ -41,6 +41,13 @@ export default {
 			params: params,
 		});
 	},
+	treeDataNoThree: function (params) {
+		return request({
+			url: prefix + "/sys/office/treeDataNoThree",
+			method: "get",
+			params: params,
+		});
+	},
 	treeDataNew: function (params) {
 		return request({
 			url: prefix + "/sys/office/treeDataNew",

+ 7 - 0
src/api/sys/userService.js

@@ -94,6 +94,13 @@ export default {
 			params: params,
 		});
 	},
+	listNoThree: function (params) {
+		return request({
+			url: prefix + "/sys/user/listNoThree",
+			method: "get",
+			params: params,
+		});
+	},
 	listNew: function (params) {
 		return request({
 			url: prefix + "/sys/user/listNew",

+ 2 - 2
src/components/userSelect/UserSelectDialog.vue

@@ -245,7 +245,7 @@ export default {
 			// 	this.officeTreeData = data
 			// 	this.showGrouploading = false;
 			// })
-			var res = await officeService.treeData({ tenantId: this.tenantId });
+			var res = await officeService.treeDataNoThree({ tenantId: this.tenantId });
 			this.showGrouploading = false;
 			// var allNode = { id: "", type: "1", name: "所有" };
 			// res.unshift(allNode);
@@ -256,7 +256,7 @@ export default {
 		async getUser() {
 			this.showUserloading = true;
 			userService
-				.list({
+				.listNoThree({
 					current: this.currentPage,
 					size: this.pageSize,
 					...this.searchForm,

+ 2 - 2
src/components/userSelectForQualification/UserSelectDialog.vue

@@ -245,7 +245,7 @@ export default {
 			// 	this.officeTreeData = data
 			// 	this.showGrouploading = false;
 			// })
-			var res = await officeService.treeData({ tenantId: this.tenantId });
+			var res = await officeService.treeDataNoThree({ tenantId: this.tenantId });
 			this.showGrouploading = false;
 			// var allNode = { id: "", type: "1", name: "所有" };
 			// res.unshift(allNode);
@@ -257,7 +257,7 @@ export default {
 			this.showUserloading = true;
 			this.searchForm.certType = '3'  //一级造价师
 			userService
-				.list({
+				.listNoThree({
 					current: this.currentPage,
 					size: this.pageSize,
 					...this.searchForm,

+ 3 - 1
src/views/cw/fillingbatch/FillingbatchDia.vue

@@ -514,7 +514,9 @@
 			//展开行
 			expandAllTreeEvent(){
 				console.log('121')
-				this.$refs.batchTable.setAllTreeExpand(true)
+				this.$nextTick(() => {
+					this.$refs.batchTable.setAllTreeExpand(true)
+				})
 			}
 
 

+ 8 - 2
src/views/cw/fillingbatch/FillingbatchForm.vue

@@ -84,7 +84,7 @@
 							style="margin-left: 5em"
 							highlight-current-row
 							:edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon:'_'}"
-							:tree-config="{transform: true,rowField: 'id', parentField: 'parentId', accordion: true}"
+							:tree-config="{transform: true,rowField: 'id', parentField: 'parentId'}"
 							row-id="id">
 							<vxe-column title="归档项目编号/文件类型" field="projectNumber" align="center" tree-node>
 								<template v-slot:edit="scope">
@@ -532,6 +532,9 @@
 							this.inputForm.cwFillingbatchProjects.push(d);
 							// 插入表格
 							this.$refs.batchTable.insertAt(d);
+							this.$nextTick(() => {
+								this.$refs.batchTable.setAllTreeExpand(true)// Expanding all the rows
+							});
 						}
 					})
 				});
@@ -571,7 +574,10 @@
 			//展开行
 			expandAllTreeEvent(){
 				console.log('121')
-				this.$refs.batchTable.setAllTreeExpand(true)
+				this.$nextTick(() => {
+					this.$refs.batchTable.setAllTreeExpand(true)
+				})
+
 			},
 			beforeUploadDetail(file) {
 				const formBody = new FormData()

+ 103 - 14
src/views/cw/invoice/InvoiceForm.vue

@@ -283,20 +283,53 @@
 							  :rules="[
                         {required: true, message:'发票金额不能为空', trigger:'blur'}
                ]">
-					<el-input-number
-						v-model="inputForm.account"
-						controls-position="right"
-						style="width:100%"
-						:precision="2"
-						:max="9999999999"
-						:step="0.01"
-						:min="0"
+<!--					<el-input-number-->
+<!--						v-model="inputForm.account"-->
+<!--						controls-position="right"-->
+<!--						style="width:100%"-->
+<!--						:precision="2"-->
+<!--						:max="9999999999"-->
+<!--						:step="0.01"-->
+<!--						:min="0"-->
+<!--						placeholder="请填写发票金额"-->
+<!--						:controls="false"-->
+<!--						clearable>-->
+<!--					</el-input-number>-->
+					<el-input
+						@input="fixedAccount"
 						placeholder="请填写发票金额"
-						:controls="false"
-						clearable>
-					</el-input-number>
+						maxlength="15"
+						v-model="inputForm.account"
+					>
+					</el-input>
 				</el-form-item>
 			</el-col >
+			<el-col :span="12">
+				<el-form-item label="是否红字发票" prop="redInvoiceFlag"
+							  :rules="[
+                        {required: true, message:'是否红字发票不能为空', trigger:'blur'}
+               ]">
+					<el-radio v-model="inputForm.redInvoiceFlag" v-for="item in $dictUtils.getDictList('yes_no')" :label="item.value" style="margin-right: 20px">
+						{{item.label}}</el-radio>
+				</el-form-item>
+			</el-col>
+
+			<el-col v-if="inputForm.redInvoiceFlag === '1'" :span="12">
+				<el-form-item label="关联红字发票" prop="redInvoiceRelevancyNumber"
+							  :rules="[
+                        {required: true, message:'关联红字发票不能为空', trigger:'blur'},{required: true, message:'关联红字发票不能为空', trigger:'change'}
+               ]">
+					<el-input :readonly="true" placeholder="请关联红字发票" v-model="inputForm.redInvoiceRelevancyNumber" @focus="openWorkInvoiceForm()" clearable></el-input>
+				</el-form-item>
+			</el-col>
+
+			<el-col v-if="inputForm.redInvoiceFlag === '1'" :span="12">
+				<el-form-item label="关联发票号" prop="invoiceNumberStr"
+							  :rules="[
+             ]">
+					<el-input :disabled="true" placeholder="关联发票号" v-model="inputForm.invoiceNumberStr" clearable></el-input>
+				</el-form-item>
+			</el-col>
 <!--          <el-col :span="12">-->
 <!--            <el-form-item label="是否多张开票" prop="isMultiple"-->
 <!--                          :rules="[-->
@@ -655,6 +688,8 @@
     <ProgramPageForm ref="programPageForm" @getProgram="getProgram"></ProgramPageForm>
     <ContractForm  ref="contractForm" @getContract="getContract"></ContractForm>
     <WorkClientForm  ref="workClientForm" @getWorkClientRadioChoose="getWorkClient"></WorkClientForm>
+	  <WorkInvoiceForm  ref="workInvoiceForm" @getWorkInvoiceRadioChoose="getWorkInvoice"></WorkInvoiceForm>
+
 	  <!--		邮箱弹窗-->
 	  <el-dialog v-model="dialogFormVisible" style="width: 50%" title="邮箱修改">
 		  <el-form :model="form" label-width="160px">
@@ -702,6 +737,7 @@
   import SelectUserTree from '@/views/utils/treeUserSelect'
   import SelectTree from '@/components/treeSelect/treeSelect.vue'
   import XEUtils from 'xe-utils'
+  import WorkInvoiceForm from './WorkInvoiceChooseRadio'
   import userService from "../../../api/sys/userService";
   export default {
     data () {
@@ -760,7 +796,11 @@
           receivablesDate: '',
           receivablesStatus: '',
           isReceivables: '',
-          isMultiple: ''
+          isMultiple: '',
+			redInvoiceFlag: '0',	//是否红字发票
+			redInvoiceRelevancyNumber: '',	//红字发票编号
+			invoiceNumberStr: '',	//红字发票号
+			redInvoiceRelevancyId: '',	//红字发票id
         },
         programRow: '',
         bankList: [],
@@ -780,6 +820,7 @@
       ProgramPageForm,
       ContractForm,
       WorkClientForm,
+		WorkInvoiceForm,
       SelectUserTree,
       SelectTree,
       UpLoadComponent
@@ -851,7 +892,11 @@
           receivablesDate: '',
           receivablesStatus: '',
           isReceivables: '',
-          isMultiple: ''
+          isMultiple: '',
+			redInvoiceFlag: '0',
+			redInvoiceRelevancyNumber: '',	//红字发票编号
+			invoiceNumberStr: '',	//红字发票号
+			redInvoiceRelevancyId: '',	//红字发票id
         }
         this.inputForm.id = id
         this.visible = true
@@ -864,6 +909,11 @@
           	// this.inputForm.financeInvoiceBaseDTOList.reportNo=data.reportNo
             this.inputForm = this.recover(this.inputForm, data)
             this.inputForm = JSON.parse(JSON.stringify(this.inputForm))
+			  if (this.commonJS.isEmpty(this.inputForm.redInvoiceFlag)) {
+				  this.inputForm.redInvoiceFlag = '0'
+			  }else {
+				  this.inputForm.redInvoiceFlag = String(this.inputForm.redInvoiceFlag)
+			  }
 			  console.log('this.inputForm ', this.inputForm)
             if (!this.commonJS.isEmpty(this.inputForm.billingWorkplaceRealId)) {
               this.bankList = []
@@ -1372,7 +1422,13 @@
 					}
 					if (['account'].includes(column.property)) {
 						// eslint-disable-next-line no-undef
-						this.inputForm.accountTotal = XEUtils.sum(data, column.property)
+						let  sunAccount = XEUtils.sum(data, column.property)
+						this.inputForm.accountTotal = sunAccount
+						if(sunAccount<0){
+							this.inputForm.redInvoiceFlag = "1"
+						}else{
+							this.inputForm.redInvoiceFlag = "0"
+						}
 						return XEUtils.sum(data, column.property)
 					}
 					if (['accountTotal'].includes(column.property)) {
@@ -1400,6 +1456,39 @@
 				this.dialogFormVisible = false
 			)
 		},
+		openWorkInvoiceForm() {
+			this.$refs.workInvoiceForm.init()
+		},
+		getWorkInvoice(row) {
+			console.log("getWorkInvoice",row)
+			this.inputForm.redInvoiceRelevancyNumber = row.no
+			this.inputForm.invoiceNumberStr = row.number
+			this.inputForm.redInvoiceRelevancyId = row.id
+			this.$forceUpdate()
+		},
+		// 格式化 发票金额  保留两位小数
+		fixedAccount () {
+			if (isNaN(this.inputForm.account) && !/^-$/.test(this.inputForm.account)) {
+				this.inputForm.account = ''
+			}
+			if (!/^[+-]?\d*\.{0,1}\d{0,1}$/.test(this.inputForm.account)) {
+				this.inputForm.account = this.inputForm.account.replace(/\.\d{2,}$/, this.inputForm.account.substr(this.inputForm.account.indexOf('.'), 3))
+			}
+			// 禁止录入整数部分两位以上,但首位为0
+			var regStrs = [
+				['^(\\-)?0(\\d+)$', '$1']
+			]
+			for (var i = 0; i < regStrs.length; i++) {
+				var reg = new RegExp(regStrs[i][0])
+				var result = this.inputForm.account.replace(reg, regStrs[i][1])
+				this.inputForm.account = result
+			}
+			if(this.inputForm.account<0){
+				this.inputForm.redInvoiceFlag = "1"
+			}else{
+				this.inputForm.redInvoiceFlag = "0"
+			}
+		},
     }
   }
 </script>

+ 117 - 18
src/views/cw/invoice/InvoiceFormTask.vue

@@ -291,20 +291,52 @@
                         :rules="[
                         {required: true, message:'发票金额不能为空', trigger:'blur'}
                ]">
-			  <el-input-number
-				  v-model="inputForm.account"
-				  controls-position="right"
-				  style="width:100%"
-				  :precision="2"
-				  :max="9999999999"
-				  :step="0.01"
-				  :min="0"
+<!--			  <el-input-number-->
+<!--				  v-model="inputForm.account"-->
+<!--				  controls-position="right"-->
+<!--				  style="width:100%"-->
+<!--				  :precision="2"-->
+<!--				  :max="9999999999"-->
+<!--				  :step="0.01"-->
+<!--				  placeholder="请填写发票金额"-->
+<!--				  :controls="false"-->
+<!--				  clearable>-->
+<!--			  </el-input-number>-->
+			  <el-input
+				  @input="fixedAccount"
 				  placeholder="请填写发票金额"
-				  :controls="false"
-				  clearable>
-			  </el-input-number>
+				  maxlength="15"
+				  v-model="inputForm.account"
+			  >
+			  </el-input>
           </el-form-item>
         </el-col >
+		  <el-col :span="12">
+			  <el-form-item label="是否红字发票" prop="redInvoiceFlag"
+							:rules="[
+                        {required: true, message:'是否红字发票不能为空', trigger:'blur'}
+               ]">
+				  <el-radio v-model="inputForm.redInvoiceFlag" v-for="item in $dictUtils.getDictList('yes_no')" :label="item.value" style="margin-right: 20px">
+					  {{item.label}}</el-radio>
+			  </el-form-item>
+		  </el-col>
+
+		  <el-col v-if="inputForm.redInvoiceFlag === '1'" :span="12">
+			  <el-form-item label="关联红字发票" prop="redInvoiceRelevancyNumber"
+							:rules="[
+                        {required: true, message:'关联红字发票不能为空', trigger:'blur'},{required: true, message:'关联红字发票不能为空', trigger:'change'}
+               ]">
+				  <el-input :readonly="true" placeholder="请关联红字发票" v-model="inputForm.redInvoiceRelevancyNumber" @focus="openWorkInvoiceForm()" clearable></el-input>
+			  </el-form-item>
+		  </el-col>
+
+		  <el-col v-if="inputForm.redInvoiceFlag === '1'" :span="12">
+			  <el-form-item label="关联发票号" prop="invoiceNumberStr"
+							:rules="[
+             ]">
+				  <el-input :disabled="true" placeholder="关联发票号" v-model="inputForm.invoiceNumberStr" clearable></el-input>
+			  </el-form-item>
+		  </el-col>
 		  <el-col :span="12" v-if="(this.commonJS.isNotEmpty(this.bj1)) && status === 'audit'">
 			  <el-form-item label="项目类别" prop="reportType"
 							:rules="[]"
@@ -746,7 +778,9 @@
     <ContractForm  ref="contractForm" @getContract="getContract"></ContractForm>
     <WorkClientForm  ref="workClientForm" @getWorkClientRadioChoose="getWorkClient"></WorkClientForm>
     <WorkClientBillingChooseRadio ref="billingChoose" @getBilling="getBilling"></WorkClientBillingChooseRadio>
-		<!--		邮箱弹窗-->
+	  <WorkInvoiceForm  ref="workInvoiceForm" @getWorkInvoiceRadioChoose="getWorkInvoice"></WorkInvoiceForm>
+
+	  <!--		邮箱弹窗-->
 	  <el-dialog v-model="dialogFormVisible" style="width: 50%" title="邮箱修改">
 		  <el-form :model="form" label-width="160px">
 			  <el-row :gutter="15">
@@ -795,6 +829,8 @@
   import WorkClientBillingChooseRadio from '@/views/cw/workClientInfo/WorkClientBillingChooseRadio'
   import XEUtils from 'xe-utils'
   import userService from "../../../api/sys/userService";
+  import WorkInvoiceForm from './WorkInvoiceChooseRadio'
+
   export default {
 	  props: {
 		  businessId: {
@@ -868,7 +904,11 @@
 				  billingId: '',
 				  reportType: '',
 				  tenantId: '',
-				  actualDrawerEmailAddress: ''
+				  actualDrawerEmailAddress: '',
+				  redInvoiceFlag: '',	//是否红字发票
+				  redInvoiceRelevancyNumber: '',	//红字发票编号
+				  invoiceNumberStr: '',	//红字发票号
+				  redInvoiceRelevancyId: '',	//红字发票id
 			  },
 			  programRow: '',
 			  bankList: [],
@@ -894,6 +934,7 @@
 		  ProgramPageForm,
 		  ContractForm,
 		  WorkClientForm,
+		  WorkInvoiceForm,
 		  SelectUserTree,
 		  SelectTree,
 		  UpLoadComponent,
@@ -986,7 +1027,11 @@
 				  billingId: '',
 				  reportType: '',
 				  tenantId: '',
-				  actualDrawerEmailAddress: ''
+				  actualDrawerEmailAddress: '',
+				  redInvoiceFlag: '',
+				  redInvoiceRelevancyNumber: '',	//红字发票编号
+				  invoiceNumberStr: '',	//红字发票号
+				  redInvoiceRelevancyId: '',	//红字发票id
 			  };
 
 			  this.inputForm.id = id;
@@ -1013,6 +1058,7 @@
 					  this.$refs.uploadComponent.clearUpload();
 					  this.inputForm = this.recover(this.inputForm, invoiceData);
 
+					  console.log('this.inputForm',this.inputForm)
 					  if (this.commonJS.isEmpty(this.inputForm.actualDrawerEmailAddress)) {
 						  this.inputForm.actualDrawerEmailAddress = this.userEmail;
 					  }
@@ -1057,7 +1103,11 @@
 					  if (this.commonJS.isEmpty(this.inputForm.isMultiple) && this.status !== 'taskFormDetail') {
 						  this.inputForm.isMultiple = '0';
 					  }
-
+					  if (this.commonJS.isEmpty(this.inputForm.redInvoiceFlag)) {
+						  this.inputForm.redInvoiceFlag = '0'
+					  }else {
+						  this.inputForm.redInvoiceFlag = String(this.inputForm.redInvoiceFlag)
+					  }
 					  if (this.status === 'audit' || this.status === 'taskFormDetail') {
 						  method = 'view';
 						  if (this.status === 'audit') {
@@ -1197,7 +1247,17 @@
 					  throw new Error()
 				  }
 			  }
-
+				//判断是否是红字发票
+			  if (this.inputForm.account > 0 && this.inputForm.redInvoiceFlag == '1'){
+				  this.loading = false
+				  this.$message.error("发票金额为正数,不可为红字发票,请将是否红字发票请选择否")
+				  throw new Error()
+			  }
+			  if (this.inputForm.account < 0 && this.inputForm.redInvoiceFlag == '0'){
+				  this.loading = false
+				  this.$message.error("发票金额为负数,请将是否红字发票请选择是,并选择关联的发票信息")
+				  throw new Error()
+			  }
 			  if (this.commonJS.isNotEmpty(this.inputForm.financeInvoiceBaseDTOList)) {
 				  let i = this.inputForm.financeInvoiceBaseDTOList.length
 				  for (let j = 0; j < i; j++) {
@@ -1753,7 +1813,13 @@
 					  }
 					  if (['account'].includes(column.property)) {
 						  // eslint-disable-next-line no-undef
-						  this.inputForm.accountTotal = XEUtils.sum(data, column.property)
+						  let  sunAccount = XEUtils.sum(data, column.property)
+						  this.inputForm.accountTotal = sunAccount
+						  if(sunAccount<0){
+							  this.inputForm.redInvoiceFlag = "1"
+						  }else{
+							  this.inputForm.redInvoiceFlag = "0"
+						  }
 						  return XEUtils.sum(data, column.property)
 					  }
 					  // if (['accountTotal'].includes(column.property)) {
@@ -1794,7 +1860,40 @@
 					  throw new Error("请输入正确的邮箱地址")
 				  }
 			   }
-		  }
+		  },
+		  openWorkInvoiceForm() {
+			  this.$refs.workInvoiceForm.init()
+		  },
+		  getWorkInvoice(row) {
+			  console.log("getWorkInvoice",row)
+			  this.inputForm.redInvoiceRelevancyNumber = row.no
+			  this.inputForm.invoiceNumberStr = row.number
+			  this.inputForm.redInvoiceRelevancyId = row.id
+			  this.$forceUpdate()
+		  },
+		  // 格式化 发票金额  保留两位小数
+		  fixedAccount () {
+			  if (isNaN(this.inputForm.account) && !/^-$/.test(this.inputForm.account)) {
+				  this.inputForm.account = ''
+			  }
+			  if (!/^[+-]?\d*\.{0,1}\d{0,1}$/.test(this.inputForm.account)) {
+				  this.inputForm.account = this.inputForm.account.replace(/\.\d{2,}$/, this.inputForm.account.substr(this.inputForm.account.indexOf('.'), 3))
+			  }
+			  // 禁止录入整数部分两位以上,但首位为0
+			  var regStrs = [
+				  ['^(\\-)?0(\\d+)$', '$1']
+			  ]
+			  for (var i = 0; i < regStrs.length; i++) {
+				  var reg = new RegExp(regStrs[i][0])
+				  var result = this.inputForm.account.replace(reg, regStrs[i][1])
+				  this.inputForm.account = result
+			  }
+			  if(this.inputForm.account<0){
+				  this.inputForm.redInvoiceFlag = "1"
+			  }else{
+				  this.inputForm.redInvoiceFlag = "0"
+			  }
+		  },
     }
   }
 </script>

+ 8 - 7
src/views/cw/invoice/InvoiceList.vue

@@ -260,12 +260,12 @@
               {{$dictUtils.getDictLabel('collect_not', scope.row.receivablesStatus, '')}}
             </template>
           </vxe-column>
-          <vxe-column min-width="110"  align="center" title="是否作废" field="invalidStatus">
-            <template #default="scope">
-              {{scope.row.invalidStatus === '1'?'已作废':'未作废'}}
-            </template>
+<!--          <vxe-column min-width="110"  align="center" title="是否作废" field="invalidStatus">-->
+<!--            <template #default="scope">-->
+<!--              {{scope.row.invalidStatus === '1'?'已作废':'未作废'}}-->
+<!--            </template>-->
 
-          </vxe-column>
+<!--          </vxe-column>-->
           <vxe-column  min-width="110"  align="center" title="状态" field="status" >
             <template #default="scope">
               <el-button @click="invoiceDetail(scope.row)" :type="$dictUtils.getDictLabel('invoice_status_info', scope.row.status, '')" effect="dark" >{{$dictUtils.getDictLabel("invoice_status", scope.row.status, '')}} </el-button>
@@ -284,8 +284,8 @@
               <el-button v-if="hasPermission('cw_finance:invoice:edit:receivables')&&scope.row.status === '5'&&scope.row.receivablesStatus !== '1'" text type="primary"  @click="view(true, scope.row)">收款</el-button>
               <el-button v-if="hasPermission('cw_finance:invoice:edit:is_receivables')&&scope.row.status === '5'&&scope.row.receivablesStatus !== '1'" text type="primary"  @click="isReceivables(scope.row)">确认收款</el-button>
               <el-button v-if="hasPermission('cw_finance:invoice:edit:is_receivables')&&scope.row.status === '5'&&scope.row.receivablesStatus === '1'" text type="primary" @click="recallReceivables(scope.row)">撤回收款</el-button>
-              <el-button v-if="hasPermission('cw_finance:invoice:edit')&&scope.row.createBy.id === $store.state.user.id&&(scope.row.status === '5'||scope.row.status === '7')" text type="primary"  @click="invoiceInvalidPush(scope.row)">作废</el-button>
-              <el-button v-if="hasPermission('cw_finance:invoice:edit')&&scope.row.createBy.id === $store.state.user.id&&scope.row.status === '6'" text type="primary" @click="invoiceInvalidReBack(scope.row)">作废撤回</el-button>
+<!--              <el-button v-if="hasPermission('cw_finance:invoice:edit')&&scope.row.createBy.id === $store.state.user.id&&(scope.row.status === '5'||scope.row.status === '7')" text type="primary"  @click="invoiceInvalidPush(scope.row)">作废</el-button>-->
+<!--              <el-button v-if="hasPermission('cw_finance:invoice:edit')&&scope.row.createBy.id === $store.state.user.id&&scope.row.status === '6'" text type="primary" @click="invoiceInvalidReBack(scope.row)">作废撤回</el-button>-->
               <el-button v-if="hasPermission('cw_finance:invoice:edit')&&scope.row.createBy.id === $store.state.user.id&&(scope.row.status === '1'||scope.row.status === '3')" text type="primary"  @click="del(scope.row.id)">删除</el-button>
 <!--              审核  发票申请-->
               <el-button v-if="scope.row.status==='2' && checkIsAudit(scope.row)" text type="primary"  @click="examine(scope.row)">审核</el-button>
@@ -501,6 +501,7 @@
           ...this.searchForm
         }).then((data) => {
         	this.dataList=data.records
+			console.log('this.dataList',this.dataList)
           this.dataList.forEach(item => {
             item.account = parseFloat(item.account).toFixed(2)
             if (!this.commonJS.isEmpty(item.financeInvoiceBaseDTOList)) {

+ 171 - 0
src/views/cw/invoice/WorkInvoiceChooseRadio.vue

@@ -0,0 +1,171 @@
+<template>
+  <div>
+    <el-dialog
+      :title="title"
+      :close-on-click-modal="false"
+	  draggable
+      width="1400px"
+      append-to-body
+      height="500px"
+      @close="close"
+      @keyup.enter.native="getWorkInvoice"
+	  v-model="visibleChoose">
+      <div style="height: calc(100%);">
+		<el-form size="large" :inline="true" class="query-form m-b-10" ref="searchForm" :model="searchForm" @submit.native.prevent>
+          <!-- 搜索框-->
+          <el-form-item label="发票申请编号" prop="no">
+            <el-input size="large" v-model="searchForm.no" placeholder="发票申请编号" clearable></el-input>
+          </el-form-item>
+          <el-form-item label="发票号" prop="number">
+            <el-input size="large" v-model="searchForm.number" placeholder="发票号" clearable></el-input>
+          </el-form-item>
+          <el-form-item label="开票内容" prop="billingContent">
+            <el-select v-model="searchForm.billingContent" placeholder="请选择" style="width:100%" clearable>
+              <el-option
+                v-for="item in $dictUtils.getDictList('invoice_billing_content')"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value">
+              </el-option>
+            </el-select>
+          </el-form-item>
+
+
+          <el-form-item>
+            <el-button type="primary" @click="list()" size="large" icon="el-icon-search">查询</el-button>
+            <el-button @click="resetSearch()" size="large" icon="el-icon-refresh-right">重置</el-button>
+          </el-form-item>
+        </el-form>
+
+        <vxe-table
+          border="inner"
+          height="480px"
+          :loading="loading"
+          size="small"
+          ref="invoiceTable"
+          show-header-overflow
+          show-overflow
+          highlight-hover-row
+          :menu-config="{}"
+          :print-config="{}"
+          :sort-config="{remote:true}"
+          :data="dataList"
+          :row-config="{isCurrent: true}"
+          :tree-config="{transform: true, rowField: 'id', parentField: 'oneUpCompany'}"
+          :radio-config="{trigger: 'row'}">
+          <vxe-column type="seq" width="40"></vxe-column>
+          <vxe-column type="radio" width="60px"></vxe-column>
+          <vxe-column width="230px" title="发票申请编号" align="center" field="no"></vxe-column>
+          <vxe-column width="200px" title="发票号" align="center" field="number"></vxe-column>
+          <vxe-column width="200px" title="开票内容" align="center" field="billingContent">
+            <template #default="scope">
+              {{$dictUtils.getDictLabel('invoice_billing_content', scope.row.billingContent, '-')}}
+            </template>
+          </vxe-column>
+			<vxe-column width="200px" title="项目名称" align="center" field="programName"></vxe-column>
+			<vxe-column width="200px" title="经办人" align="center" field="operator"></vxe-column>
+          <vxe-column width="200px" title="开票总金额" align="center" field="account"></vxe-column>
+        </vxe-table>
+		  <vxe-pager
+			  background
+			  :current-page="tablePage.currentPage"
+			  :page-size="tablePage.pageSize"
+			  :total="tablePage.total"
+			  :page-sizes="[10, 20, 100, 1000, {label: '全量数据', value: 1000000}]"
+			  :layouts="['PrevPage', 'JumpNumber', 'NextPage', 'FullJump', 'Sizes', 'Total']"
+			  @page-change="currentChangeHandle">
+		  </vxe-pager>
+      </div>
+		<template #footer>
+			<span class="dialog-footer">
+				<el-button @click="close()" icon="el-icon-circle-close">关闭</el-button>
+			<el-button type="primary" v-if="method != 'view'" @click="getWorkInvoice()" icon="el-icon-circle-check" v-noMoreClick>确定</el-button>
+			</span>
+		</template>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  import financeInvoiceService from '@/api/cw/invoice/CwFinanceInvoiceService'
+  export default {
+    data () {
+      return {
+        title: '',
+        method: '',
+        visibleChoose: false,
+        loading: false,
+        tablePage: {
+          total: 0,
+          currentPage: 1,
+          pageSize: 10,
+          orders: []
+        },
+        dataList: [],
+        searchForm: {
+          number: '',
+          no: '',
+		  billingContent: ''
+        }
+      }
+    },
+    created () {
+    },
+    components: {
+    },
+    methods: {
+      init () {
+        this.title = '发票选择'
+        this.visibleChoose = true
+        this.list()
+      },
+      // 表单提交
+		getWorkInvoice () {
+        let row = this.$refs.invoiceTable.getRadioRecord()
+        if (this.commonJS.isEmpty(row)) {
+          this.$message.error('请至少选择一条数据')
+        } else {
+          this.close()
+          this.$emit('getWorkInvoiceRadioChoose', row)
+        }
+      },
+      list () {
+        this.dataList = []
+        this.loading = true
+        this.searchForm.isTrue = '1'
+		  financeInvoiceService.redList({
+          'current': this.tablePage.currentPage,
+          'size': this.tablePage.pageSize,
+          'orders': this.tablePage.orders,
+          ...this.searchForm
+        }).then((data) => {
+          this.dataList = data.records
+          this.tablePage.total = data.total
+          this.loading = false
+        })
+      },
+      // 当前页
+      currentChangeHandle ({currentPage, pageSize}) {
+        this.tablePage.currentPage = currentPage
+        this.tablePage.pageSize = pageSize
+        this.list()
+      },
+      resetSearch () {
+        this.$refs.searchForm.resetFields()
+        this.list()
+      },
+      close () {
+        this.$refs.searchForm.resetFields()
+        this.visibleChoose = false
+      }
+    }
+  }
+</script>
+<style scoped>
+  /deep/ .el-dialog__body {
+    padding-top: 0;
+  }
+  /deep/ .el-form-item--mini.el-form-item, .el-form-item--small.el-form-item {
+    margin-bottom: 0px;
+  }
+</style>

+ 43 - 23
src/views/cw/projectRecords/ProjectRecordsAddForm.vue

@@ -106,7 +106,7 @@
                           label: 'name',         // 显示名称
                           children: 'children'    // 子级字段名
                         }"
-                      :url="`/system-server/sys/office/treeData?type=2`"
+                      :url="`/system-server/sys/office/treeDataNoThree?type=2`"
                       :value="inputForm.officeId"
                       :accordion="true"
                       size="default"
@@ -196,29 +196,30 @@
                   </el-form-item>
                 </el-col>-->
                 <el-col :span="12">
-                  <el-form-item label="项目预计时间" prop="planDate"
-                                :rules="[
-                   ]">
-                    <el-date-picker
-                      style="width: 100%"
-                      placement="bottom-start"
-                      format="YYYY-MM-DD h:m:s"
-                      value-format="YYYY-MM-DD h:m:s"
-                      v-model="inputForm.planDate"
-                      type="datetimerange"
-                      range-separator="至"
-                      start-placeholder="开始日期"
-                      @change="forUpdate"
-                      end-placeholder="结束日期">
-                    </el-date-picker>
-                  </el-form-item>
+<!--                  <el-form-item label="项目预计时间" prop="planDate"-->
+<!--                                :rules="[-->
+<!--                   ]">-->
+<!--                    <el-date-picker-->
+<!--                      style="width: 100%"-->
+<!--                      placement="bottom-start"-->
+<!--                      format="YYYY-MM-DD h:m:s"-->
+<!--                      value-format="YYYY-MM-DD h:m:s"-->
+<!--                      v-model="inputForm.planDate"-->
+<!--                      type="datetimerange"-->
+<!--                      range-separator="至"-->
+<!--                      start-placeholder="开始日期"-->
+<!--                      @change="forUpdate"-->
+<!--                      end-placeholder="结束日期">-->
+<!--                    </el-date-picker>-->
+<!--                  </el-form-item>-->
                 </el-col>
                 <el-col :span="12">
-                  <el-form-item label="现场负责人" prop="projectLeaderId"
-                                :rules="[
+                  <el-form-item label="现场负责人" prop="projectLeaderName"
+                                :rules="[{required: true, message:'现场负责人不能为空', trigger:'blur'}
                    ]">
 <!--                    <UserSelectSignatory :readonly="true" :disabled="status === 'audit' || status === 'taskFormDetail'" :limit='1' :modelValue="inputForm.projectLeaderId" @update:modelValue='(value) => {inputForm.projectLeaderId = value}'></UserSelectSignatory>-->
-					  <UserSelectForQualification :readonly="true" :disabled="method === 'view'" :limit='1' :modelValue="inputForm.projectLeaderId" @update:modelValue='(value) => {inputForm.projectLeaderId = value}'></UserSelectForQualification>
+<!--					  <UserSelectForQualification :readonly="true" :disabled="method === 'view'" :limit='1' :modelValue="inputForm.projectLeaderId" @update:modelValue='(value) => {inputForm.projectLeaderId = value}'></UserSelectForQualification>-->
+					  <el-input v-model="inputForm.projectLeaderName" :readonly="true"  :disabled="method === 'view'" @focus="userPullListForm()"></el-input>
 					  <span style="color: red">必须拥有一级造价师证书</span>
 				  </el-form-item>
                 </el-col>
@@ -509,6 +510,7 @@
     <ContractNameForm ref="contractNameForm"></ContractNameForm>
     <CwClientPageForm ref="cwClientPageForm" @getProgram="getProgram"></CwClientPageForm>
     <CwConstructionForm ref="cwConstructionForm" @getProgram2="getProgram2"></CwConstructionForm>
+	  <UserPullFormNew ref="userPullFormNew" @getProgramForUser="getProgramForUser"></UserPullFormNew>
   </div>
 
 
@@ -531,6 +533,7 @@
   import UserSelectSignatory from '@/components/userSelect'
   import UserSelectForQualification from '@/components/userSelectForQualification'
   import CwProjectBusinessTypeService from '@/api/cw/projectBusinessType/CwProjectBusinessTypeService'
+  import UserPullFormNew from '@/views/finance/invoice/UserPullFormNew'
   export default {
     props: {
       businessId: {
@@ -574,6 +577,7 @@
           planEndDate: '',
           projectMasterId: '',
           projectLeaderId: '',
+			projectLeaderName: '',
           procInsId: '',
           processDefinitionId: '',
           status: '',
@@ -674,6 +678,7 @@
       ContractNameForm,
       UserSelectSignatory,
 		UserSelectForQualification,
+		UserPullFormNew,
 	  CwProjectBusinessTypeService
     },
     methods: {
@@ -712,6 +717,7 @@
           planEndDate: '',
           projectMasterId: '',
           projectLeaderId: '',
+			projectLeaderName: '',
           procInsId: '',
           processDefinitionId: '',
           status: '',
@@ -768,9 +774,9 @@
             if (this.commonJS.isEmpty(this.inputForm.cwProjectClientInfoDTOList)) {
               this.inputForm.cwProjectClientInfoDTOList = []
             }
-            if (this.commonJS.isEmpty(this.inputForm.projectLeaderId)) {
-              this.inputForm.projectLeaderId = this.$store.state.user.id
-            }
+            // if (this.commonJS.isEmpty(this.inputForm.projectLeaderId)) {
+            //   this.inp	utForm.projectLeaderId = this.$store.state.user.id
+            // }
             if (this.commonJS.isEmpty(this.inputForm.projectMoney)) {
               this.inputForm.projectMoney = ''
             }
@@ -799,6 +805,11 @@
               this.$message.error('“被服务单位”中至少填写一条信息')
               throw new Error('“被服务单位”中至少填写一条信息')
             }
+			  if (this.commonJS.isEmpty(this.inputForm.projectLeaderId)) {
+				  this.loading = false
+				  this.$message.error('请选择现场负责人')
+				  throw new Error('请选择现场负责人')
+			  }
             if (this.inputForm.projectLevel === '1') {
             	if (this.inputForm.projectMoney < 500) {
 					this.loading = false
@@ -859,6 +870,7 @@
           planEndDate: '',
           projectMasterId: '',
           projectLeaderId: '',
+			projectLeaderName: '',
           procInsId: '',
           processDefinitionId: '',
           status: '',
@@ -1254,6 +1266,14 @@
 			this.inputForm.businessType = row.id
 			this.inputForm.businessTypeName = row.name
 		},
+		userPullListForm () {
+			this.$refs.userPullFormNew.init()
+		},
+		getProgramForUser (rows) {
+			console.log('rows', rows)
+			this.inputForm.projectLeaderId = rows[0].id
+			this.inputForm.projectLeaderName = rows[0].name
+		},
     }
   }
 </script>

+ 34 - 20
src/views/cw/projectRecords/ProjectRecordsAddForm2.vue

@@ -196,28 +196,29 @@
                   </el-form-item>
                 </el-col>-->
                 <el-col :span="12">
-                  <el-form-item label="项目预计时间" prop="planDate"
-                                :rules="[
-                   ]">
-                    <el-date-picker
-                      style="width: 100%"
-                      placement="bottom-start"
-                      format="YYYY-MM-DD h:m:s"
-                      value-format="YYYY-MM-DD h:m:s"
-                      v-model="inputForm.planDate"
-                      type="datetimerange"
-                      range-separator="至"
-                      start-placeholder="开始日期"
-                      @change="forUpdate"
-                      end-placeholder="结束日期">
-                    </el-date-picker>
-                  </el-form-item>
+<!--                  <el-form-item label="项目预计时间" prop="planDate"-->
+<!--                                :rules="[-->
+<!--                   ]">-->
+<!--                    <el-date-picker-->
+<!--                      style="width: 100%"-->
+<!--                      placement="bottom-start"-->
+<!--                      format="YYYY-MM-DD h:m:s"-->
+<!--                      value-format="YYYY-MM-DD h:m:s"-->
+<!--                      v-model="inputForm.planDate"-->
+<!--                      type="datetimerange"-->
+<!--                      range-separator="至"-->
+<!--                      start-placeholder="开始日期"-->
+<!--                      @change="forUpdate"-->
+<!--                      end-placeholder="结束日期">-->
+<!--                    </el-date-picker>-->
+<!--                  </el-form-item>-->
                 </el-col>
                 <el-col :span="12">
-                  <el-form-item label="现场负责人" prop="projectLeaderId"
-                                :rules="[
+                  <el-form-item label="现场负责人" prop="projectLeaderName"
+                                :rules="[{required: true, message:'现场负责人不能为空', trigger:'blur'}
                    ]">
-                    <UserSelectSignatory :readonly="true" :disabled="status === 'audit' || status === 'taskFormDetail'" :limit='1' :modelValue="inputForm.projectLeaderId" @update:modelValue='(value) => {inputForm.projectLeaderId = value}'></UserSelectSignatory>
+<!--                    <UserSelectSignatory :readonly="true" :disabled="status === 'audit' || status === 'taskFormDetail'" :limit='1' :modelValue="inputForm.projectLeaderId" @update:modelValue='(value) => {inputForm.projectLeaderId = value}'></UserSelectSignatory>-->
+					  <el-input v-model="inputForm.projectLeaderName" :readonly="true"  :disabled="method === 'view'" @focus="userPullListForm()"></el-input>
 					  <span style="color: red">必须拥有一级造价师证书</span>
 				  </el-form-item>
                 </el-col>
@@ -508,6 +509,7 @@
     <ContractNameForm ref="contractNameForm"></ContractNameForm>
     <CwClientPageForm ref="cwClientPageForm" @getProgram="getProgram"></CwClientPageForm>
 	  <CwConstructionForm ref="cwConstructionForm" @getProgram2="getProgram2"></CwConstructionForm>
+	  <UserPullFormNew ref="userPullFormNew" @getProgramForUser="getProgramForUser"></UserPullFormNew>
   </div>
 
 
@@ -530,6 +532,7 @@
   import UserSelectSignatory from '@/components/userSelect'
   import UserSelectForQualification from '@/components/userSelectForQualification'
   import CwProjectBusinessTypeService from '@/api/cw/projectBusinessType/CwProjectBusinessTypeService'
+	import UserPullFormNew from '@/views/finance/invoice/UserPullFormNew'
   export default {
     props: {
       businessId: {
@@ -574,6 +577,7 @@
           planEndDate: '',
           projectMasterId: '',
           projectLeaderId: '',
+			projectLeaderName: '',
           procInsId: '',
           processDefinitionId: '',
           status: '',
@@ -673,7 +677,8 @@
       ContractNameForm,
       UserSelectSignatory,
 		UserSelectForQualification,
-	  CwProjectBusinessTypeService
+	  CwProjectBusinessTypeService,
+		UserPullFormNew,
     },
     methods: {
       getKeyWatch (keyWatch) {
@@ -712,6 +717,7 @@
           planEndDate: '',
           projectMasterId: '',
           projectLeaderId: '',
+			projectLeaderName: '',
           procInsId: '',
           processDefinitionId: '',
           status: '',
@@ -1254,6 +1260,14 @@
 			this.$forceUpdate()
 			this.programRow2 = ''
 		},
+		userPullListForm () {
+			this.$refs.userPullFormNew.init()
+		},
+		getProgramForUser (rows) {
+			console.log('rows', rows)
+			this.inputForm.projectLeaderId = rows[0].id
+			this.inputForm.projectLeaderName = rows[0].name
+		},
     }
   }
 </script>

+ 25 - 20
src/views/cw/projectRecords/ProjectRecordsForm.vue

@@ -198,30 +198,31 @@
                   </el-form-item>
                 </el-col>-->
                 <el-col :span="12">
-                  <el-form-item label="项目预计时间" prop="planDate"
-                                :rules="[
-                   ]">
-                    <el-date-picker
-                      style="width: 100%"
-                      placement="bottom-start"
-					  format="YYYY-MM-DD h:m:s"
-					  value-format="YYYY-MM-DD h:m:s"
-                      v-model="inputForm.planDate"
-                      type="datetimerange"
-                      range-separator="至"
-                      start-placeholder="开始日期"
-                      @change="forUpdate"
-                      end-placeholder="结束日期">
-                    </el-date-picker>
-                  </el-form-item>
+<!--                  <el-form-item label="项目预计时间" prop="planDate"-->
+<!--                                :rules="[-->
+<!--                   ]">-->
+<!--                    <el-date-picker-->
+<!--                      style="width: 100%"-->
+<!--                      placement="bottom-start"-->
+<!--					  format="YYYY-MM-DD h:m:s"-->
+<!--					  value-format="YYYY-MM-DD h:m:s"-->
+<!--                      v-model="inputForm.planDate"-->
+<!--                      type="datetimerange"-->
+<!--                      range-separator="至"-->
+<!--                      start-placeholder="开始日期"-->
+<!--                      @change="forUpdate"-->
+<!--                      end-placeholder="结束日期">-->
+<!--                    </el-date-picker>-->
+<!--                  </el-form-item>-->
                 </el-col>
 
                 <el-col :span="12">
-                  <el-form-item label="现场负责人" prop="projectLeaderId"
-                                :rules="[
+                  <el-form-item label="现场负责人" prop="projectLeaderName"
+                                :rules="[{required: true, message:'现场负责人不能为空', trigger:'blur'}
                    ]">
-					  <UserSelectForQualification :readonly="true" :disabled="method === 'view'" :limit='1' :modelValue="inputForm.projectLeaderId" @update:modelValue='(value) => {inputForm.projectLeaderId = value}'></UserSelectForQualification>
+<!--					  <UserSelectForQualification :readonly="true" :disabled="method === 'view'" :limit='1' :modelValue="inputForm.projectLeaderId" @update:modelValue='(value) => {inputForm.projectLeaderId = value}'></UserSelectForQualification>-->
 <!--                    <UserSelect :readonly="true" :disabled="method === 'view'" :limit='1' :modleValue="inputForm.projectLeaderId" @update:modelValue='(value) => {inputForm.projectLeaderId = value}'></UserSelect>-->
+					  <el-input v-model="inputForm.projectLeaderName" :readonly="true"  :disabled="method === 'view'" ></el-input>
 					  <span style="color: red">必须拥有一级造价师证书</span>
                   </el-form-item>
                 </el-col>
@@ -653,6 +654,7 @@
   import contractInfoService from '@/api/cw/workContract/contractInfoService'
   import cwFinanceInvoiceService from '@/api/cw/invoice/CwFinanceInvoiceService'
   import userService from '@/api/sys/UserService'
+  import InvoiceForm from '../invoice/InvoiceForm'
   export default {
     name: 'ProjectRecordsForm',
     props: {
@@ -695,6 +697,7 @@
           planEndDate: '',
           projectMasterId: '',
           projectLeaderId: '',
+			projectLeaderName: '',
           procInsId: '',
           processDefinitionId: '',
           status: '',
@@ -795,7 +798,8 @@
       WorkContractChooseCom,
       CwProjectBusinessTypeListForm,
       ContractNameForm,
-      InvoiceForm: () => import('../invoice/InvoiceForm'),
+		InvoiceForm,
+      // InvoiceForm: () => import('../invoice/InvoiceForm'),
       ReportManagementForm: () => import('../reportManagement/ReportManagementForm')
     },
     methods: {
@@ -836,6 +840,7 @@
           planEndDate: '',
           projectMasterId: '',
           projectLeaderId: '',
+			projectLeaderName: '',
           procInsId: '',
           processDefinitionId: '',
           status: '',

+ 26 - 22
src/views/cw/projectRecords/ProjectRecordsForm2.vue

@@ -197,29 +197,30 @@
                   </el-form-item>
                 </el-col>-->
                 <el-col :span="12">
-                  <el-form-item label="项目预计时间" prop="planDate"
-                                :rules="[
-                   ]">
-                    <el-date-picker
-                      style="width: 100%"
-                      placement="bottom-start"
-					  format="YYYY-MM-DD h:m:s"
-					  value-format="YYYY-MM-DD h:m:s"
-                      v-model="inputForm.planDate"
-                      type="datetimerange"
-                      range-separator="至"
-                      start-placeholder="开始日期"
-                      @change="forUpdate"
-                      end-placeholder="结束日期">
-                    </el-date-picker>
-                  </el-form-item>
+<!--                  <el-form-item label="项目预计时间" prop="planDate"-->
+<!--                                :rules="[-->
+<!--                   ]">-->
+<!--                    <el-date-picker-->
+<!--                      style="width: 100%"-->
+<!--                      placement="bottom-start"-->
+<!--					  format="YYYY-MM-DD h:m:s"-->
+<!--					  value-format="YYYY-MM-DD h:m:s"-->
+<!--                      v-model="inputForm.planDate"-->
+<!--                      type="datetimerange"-->
+<!--                      range-separator="至"-->
+<!--                      start-placeholder="开始日期"-->
+<!--                      @change="forUpdate"-->
+<!--                      end-placeholder="结束日期">-->
+<!--                    </el-date-picker>-->
+<!--                  </el-form-item>-->
                 </el-col>
 
                 <el-col :span="12">
-                  <el-form-item label="现场负责人" prop="projectLeaderId"
-                                :rules="[
+                  <el-form-item label="现场负责人" prop="projectLeaderName"
+                                :rules="[{required: true, message:'现场负责人不能为空', trigger:'blur'}
                    ]">
-                    <UserSelect :readonly="true" :disabled="method === 'view'" :limit='1' :modleValue="inputForm.projectLeaderId" @update:modelValue='(value) => {inputForm.projectLeaderId = value}'></UserSelect>
+<!--                    <UserSelect :readonly="true" :disabled="method === 'view'" :limit='1' :modleValue="inputForm.projectLeaderId" @update:modelValue='(value) => {inputForm.projectLeaderId = value}'></UserSelect>-->
+					  <el-input v-model="inputForm.projectLeaderName" :readonly="true"  :disabled="method === 'view'" ></el-input>
 					  <span style="color: red">必须拥有一级造价师证书</span>
 				  </el-form-item>
                 </el-col>
@@ -693,6 +694,7 @@
           planEndDate: '',
           projectMasterId: '',
           projectLeaderId: '',
+			projectLeaderName: '',
           procInsId: '',
           processDefinitionId: '',
           status: '',
@@ -834,6 +836,7 @@
           planEndDate: '',
           projectMasterId: '',
           projectLeaderId: '',
+			projectLeaderName: '',
           procInsId: '',
           processDefinitionId: '',
           status: '',
@@ -908,9 +911,9 @@
             if (this.commonJS.isEmpty(this.inputForm.projectMasterId) && this.method !== 'view') {
               this.inputForm.projectMasterId = this.$store.state.user.id
             }
-            if (this.commonJS.isEmpty(this.inputForm.projectLeaderId) && this.method !== 'view') {
-              this.inputForm.projectLeaderId = this.$store.state.user.id
-            }
+            // if (this.commonJS.isEmpty(this.inputForm.projectLeaderId) && this.method !== 'view') {
+            //   this.inputForm.projectLeaderId = this.$store.state.user.id
+            // }
             if (this.commonJS.isEmpty(this.inputForm.projectMoney)) {
               this.inputForm.projectMoney = 0
             }
@@ -1080,6 +1083,7 @@
           planEndDate: '',
           projectMasterId: '',
           projectLeaderId: '',
+			projectLeaderName: '',
           procInsId: '',
           processDefinitionId: '',
           status: '',

+ 1 - 1
src/views/cw/reimbursementApproval/info/InfoList.vue

@@ -53,7 +53,7 @@
                 label: 'name',         // 显示名称
                 children: 'children'    // 子级字段名
               }"
-          :url="`/system-server/sys/office/treeData?type=2`"
+          :url="`/system-server/sys/office/treeDataNoThree?type=2`"
           :value="searchForm.department"
           :clearable="true"
           :accordion="true"

+ 65 - 39
src/views/cw/reportManagement/ProjectRecordsInfoForm.vue

@@ -198,32 +198,33 @@
                   </el-form-item>
                 </el-col>-->
                 <el-col :span="12">
-                  <el-form-item label="项目预计时间" prop="planDate"
-                                :rules="[
-                                {required: true, message:'项目预计时间不能为空', trigger:'blur'}
-                   ]">
-                    <el-date-picker
-                      style="width: 100%"
-                      placement="bottom-start"
-					  format="YYYY-MM-DD h:m:s"
-					  value-format="YYYY-MM-DD h:m:s"
-                      v-model="inputForm.planDate"
-                      type="datetimerange"
-                      range-separator="至"
-                      start-placeholder="开始日期"
-                      @change="forUpdate"
-                      end-placeholder="结束日期">
-                    </el-date-picker>
-                  </el-form-item>
+<!--                  <el-form-item label="项目预计时间" prop="planDate"-->
+<!--                                :rules="[-->
+<!--                                {required: true, message:'项目预计时间不能为空', trigger:'blur'}-->
+<!--                   ]">-->
+<!--                    <el-date-picker-->
+<!--                      style="width: 100%"-->
+<!--                      placement="bottom-start"-->
+<!--					  format="YYYY-MM-DD h:m:s"-->
+<!--					  value-format="YYYY-MM-DD h:m:s"-->
+<!--                      v-model="inputForm.planDate"-->
+<!--                      type="datetimerange"-->
+<!--                      range-separator="至"-->
+<!--                      start-placeholder="开始日期"-->
+<!--                      @change="forUpdate"-->
+<!--                      end-placeholder="结束日期">-->
+<!--                    </el-date-picker>-->
+<!--                  </el-form-item>-->
                 </el-col>
 
                 <el-col :span="12">
-                  <el-form-item label="现场负责人" prop="projectLeaderId"
-                                :rules="[
+                  <el-form-item label="现场负责人" prop="projectLeaderName"
+                                :rules="[{required: true, message:'现场负责人不能为空', trigger:'blur'}
                    ]">
-					  <UserSelectForQualification :readonly="true" :disabled="method === 'view'" :limit='1' :modelValue="inputForm.projectLeaderId" @update:modelValue='(value) => {inputForm.projectLeaderId = value}'></UserSelectForQualification>
+<!--					  <UserSelectForQualification :readonly="true" :disabled="method === 'view'" :limit='1' :modelValue="inputForm.projectLeaderId" @update:modelValue='(value) => {inputForm.projectLeaderId = value}'></UserSelectForQualification>-->
 <!--                    <UserSelect :readonly="true" :disabled="method === 'view'" :limit='1' :modleValue="inputForm.projectLeaderId" @update:modelValue='(value) => {inputForm.projectLeaderId = value}'></UserSelect>-->
-                  </el-form-item>
+					  <el-input v-model="inputForm.projectLeaderName" :readonly="true"  :disabled="method === 'view'" ></el-input>
+				  </el-form-item>
                 </el-col>
 				  <el-col :span="12">
 					  <el-form-item label="工程类型" prop="engineeringType"
@@ -755,7 +756,14 @@
 							  <el-input maxlength="1000" type="textarea" v-model="inputForm2.paymentAgreement" placeholder="请输入付款约定"></el-input>
 						  </el-form-item>
 					  </el-col>
-
+					  <el-col :span="12">
+						  <el-form-item label="案卷号" prop="filedNo"
+										:rules="[
+                       ]">
+							  <el-input maxlength="15" v-model="inputForm2.filedNo" placeholder="请输入案卷号"
+							  ></el-input>
+						  </el-form-item>
+					  </el-col>
 				  </el-row>
 
 				  <el-tabs v-model="activeName" type="border-card" @tab-click="tabHandleClick">
@@ -2075,6 +2083,7 @@
           planEndDate: '',
           projectMasterId: '',
           projectLeaderId: '',
+			projectLeaderName: '',
           procInsId: '',
           processDefinitionId: '',
           status: '',
@@ -2132,7 +2141,8 @@
 			  cwWorkClientContactDTOList: [],
 			  contractAmountType: '',
 			  contractOpposite: '',
-			  fees: ''
+			  fees: '',
+			  filedNo: '',
 		  },
 		  inputForm3: {
 			  id: '',
@@ -2359,6 +2369,7 @@
           planEndDate: '',
           projectMasterId: '',
           projectLeaderId: '',
+			projectLeaderName: '',
           procInsId: '',
           processDefinitionId: '',
           status: '',
@@ -2412,7 +2423,8 @@
 			  contractProperList: [],
 			  cwWorkClientContactDTOList: [],
 			  contractAmountType: '',
-			  contractOpposite: ''
+			  contractOpposite: '',
+			  filedNo: '',
 		  }
 		  this.inputForm3 = {
 			  id: '',
@@ -2668,6 +2680,7 @@
 			//  获取质量复核信息
 			  projectReportService.queryByIdNew(this.inputForm.reportId).then((data) => {
 				  this.inputForm4 = this.recover(this.inputForm4, data)
+				  console.log('123',this.inputForm4)
 
 				  if (this.commonJS.isEmpty(this.inputForm4.contractCategory)) {
 					  this.inputForm4.contractCategory = '1'
@@ -2693,18 +2706,25 @@
 					  this.detailKey = Math.random()
 				  } else {
 					  this.reportReviewService.getUserInfo(this.inputForm4.reviewBy).then((data) => {
+						  // 清空现有的 detailInfos 数组,以避免重复添加空数据
+						  this.inputForm4.detailInfos = this.inputForm4.detailInfos.filter(item => item); // 去除空项
+
 						  this.inputForm4.detailInfos.forEach(item => {
-							  professionList = this.getProfessionList(item.professionType)
-							  professionList.forEach(item2 => {
-								  if (item.profession == item2.value) {
-									  item.profession = item2.label
-								  }
-								  if (item.userRole === '技术负责人') {
-									  item.memberName = data.memberName + '(' + this.inputForm4.reviewByName + '代)'
-								  }
-							  })
-						  })
-					  })
+							  // 如果 item 有效,则处理职业信息
+							  if (item) {
+								  let professionList = this.getProfessionList(item.professionType);
+
+								  professionList.forEach(item2 => {
+									  if (item.profession == item2.value) {
+										  item.profession = item2.label;
+									  }
+									  if (item.userRole === '技术负责人') {
+										  item.memberName = data.memberName + '(' + this.inputForm4.reviewByName + '代)';
+									  }
+								  });
+							  }
+						  });
+					  });
 				  }
 					console.log('我到这里来')
 					console.log('data.projectId', data.projectId)
@@ -3172,10 +3192,16 @@
 				let val = parseInt(value)
 				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]
+				if (val < k) {
+					// 如果小于 1 KB,直接返回以 B 为单位的大小
+					return val + ' B';
+				} else {
+					// 否则按比例转换为合适的单位
+					let i = Math.floor(Math.log(val) / Math.log(k));
+					let result = val / Math.pow(k, i);
+					let kb = parseFloat(result.toPrecision(3)); // 保留3位有效数字
+					return kb + ' ' + sizes[i];
+				}
 			}
 		},
 		ziXunShouRuRange(rule, value, callback) {

文件差异内容过多而无法显示
+ 2 - 2
src/views/cw/reportManagement/ReportManagementList.vue


文件差异内容过多而无法显示
+ 1 - 1
src/views/cw/reportManagement/ReportManagementList2.vue


+ 4 - 2
src/views/cw/reportManagement/reportReview/ReportReviewForm.vue

@@ -1368,11 +1368,13 @@
 			var rf = this.inputForm.reviewFee
 			//审定价
 			var af = this.inputForm.approvalFee
-			if (this.commonJS.isNotEmpty(rf) && rf !== '0.00' && this.commonJS.isNotEmpty(af) && af !== '0.00') {
+			if (this.commonJS.isNotEmpty(rf) && (rf !== '0.00' && rf != '0') && this.commonJS.isNotEmpty(af) && (af != '0.00' && af !== '0')) {
 				var hf = (af*100-rf*100)/100;
 				var rate = parseFloat(hf) / parseFloat(rf) * 100
 				this.inputForm.verifyFee = hf.toFixed(2)
 				this.inputForm.verifyRate = rate.toFixed(2)
+			}else {
+				this.inputForm.verifyRate = '0.00'
 			}
 			if (this.commonJS.isNotEmpty(af)) {
 				this.inputForm.consultFee = af
@@ -1384,7 +1386,7 @@
 			var rf = this.inputForm.reviewFee
 			//审定价
 			var af = this.inputForm.approvalFee
-			if(this.commonJS.isNotEmpty(rf) && rf != '0.00' && this.commonJS.isNotEmpty(af) && af !='0.00'){
+			if (this.commonJS.isNotEmpty(rf) && (rf !== '0.00' && rf != '0') && this.commonJS.isNotEmpty(af) && (af !== '0.00' && af != '0')) {
 				//计算审核增减额
 				var hf = (af*100-rf*100)/100;
 				var rate = parseFloat(hf) / parseFloat(rf) * 100

+ 1 - 1
src/views/cw/workClientInfo/WorkClientAddForm.vue

@@ -293,7 +293,7 @@
                           label: 'name',         // 显示名称
                           children: 'children'    // 子级字段名
                         }"
-                        :url="`/system-server/sys/office/treeData?type=2`"
+                        :url="`/system-server/sys/office/treeDataNoThree?type=2`"
                         :value="inputForm.officeId"
                         :accordion="true"
                         size="default"

+ 2 - 2
src/views/cw/workClientInfo/clientUserSelect/UserSelectDialog.vue

@@ -339,7 +339,7 @@
           this.searchForm.selectAll = 'true'
         }
         this.$http({
-          url: '/system-server/sys/user/list',
+          url: '/system-server/sys/user/listNoThree',
           method: 'get',
           params: {
             'current': this.pageNo,
@@ -359,7 +359,7 @@
       },
       refreshTree () {
         this.$http({
-          url: `/system-server/sys/office/treeDataByUser`,
+          url: `/system-server/sys/office/treeDataNoThree`,
           method: 'get'
         }).then((data) => {
           this.officeTreeData = data

+ 2 - 2
src/views/cw/workContract/ContractNameForm.vue

@@ -259,8 +259,8 @@
               </el-col>
 
               <el-col :span="12">
-                <el-form-item label="案卷号" prop="filedNo" v-if="this.inputForm.filedPaperType === '2' & this.inputForm.filedPaperType === '5'"
-                              :rules="[{required: true, message: '请输入案卷号', trigger: 'blur'}
+                <el-form-item label="案卷号" prop="filedNo"
+                              :rules="[
                        ]">
                   <el-input maxlength="15" v-model="inputForm.filedNo" placeholder="请输入案卷号"
                   ></el-input>

+ 2 - 2
src/views/cw/workContract/ContractRegistration.vue

@@ -55,7 +55,7 @@
                   label: 'name',         // 显示名称
                   children: 'children'    // 子级字段名
                 }"
-				  :url="`/system-server/sys/user/treeUserDataAllOffice?type=2`"
+				  :url="`/system-server/sys/user/treeUserDataOfficeNoThree?type=2`"
 				  :value="searchForm.createById"
 				  :clearable="true"
 				  :accordion="true"
@@ -71,7 +71,7 @@
                   children: 'children'    // 子级字段名
                 }"
 
-				  :url="`/system-server/sys/office/treeData?type=2`"
+				  :url="`/system-server/sys/office/treeDataNoThree?type=2`"
 				  :value="searchForm.department"
 				  :accordion="true"
 				  size="default"

+ 14 - 4
src/views/cw/workContract/contractRegisitionAddForm/ContractAddForm.vue

@@ -266,7 +266,14 @@
             <el-input maxlength="1000" type="textarea" v-model="inputForm.paymentAgreement" placeholder="请输入付款约定"></el-input>
           </el-form-item>
         </el-col>
-
+		  <el-col :span="12">
+			  <el-form-item label="案卷号" prop="filedNo" v-if="method === 'view'"
+							:rules="[
+                       ]">
+				  <el-input maxlength="15" v-model="inputForm.filedNo" placeholder="请输入案卷号"
+				  ></el-input>
+			  </el-form-item>
+		  </el-col>
       </el-row>
 
       <el-tabs v-model="activeName" type="border-card" @tab-click="tabHandleClick">
@@ -396,7 +403,8 @@
           contractProperList: [],
           status: '',
           customerNo: '',
-          customerName: ''
+          customerName: '',
+			filedNo: '',
         },
         inputForm: {
           customerId: '',  // 客户id
@@ -429,7 +437,8 @@
           cwWorkClientContactDTOList: [],
           contractAmountType: '',
           contractOpposite: '',
-          fees: ''
+          fees: '',
+			filedNo: '',
         },
         activeName: 'contractProper',
         filesArra2: [],
@@ -565,7 +574,8 @@
           contractProperList: [],
           cwWorkClientContactDTOList: [],
           contractAmountType: '',
-          contractOpposite: ''
+          contractOpposite: '',
+			filedNo: '',
         }
         this.inputForm.id = id
         if (method === 'add') {

+ 13 - 2
src/views/dashboard/widgets/components/MyNoticePageList.vue

@@ -69,6 +69,7 @@
 	<DepartPopup ref="departPopup"></DepartPopup>
 	<DepartProvePopup ref="departProvePopup"></DepartProvePopup>
 	<ProjectPlanForm ref="projectPlanForm"></ProjectPlanForm>
+	<CwInvoiceForm  ref="cwInvoiceForm"></CwInvoiceForm>
 </template>
 
 <script>
@@ -81,6 +82,7 @@
 // import notifyService from "@/api/notify/notifyService";
 import noticeService from '@/api/flowable/NoticeService'
 import taskService from "@/api/flowable/taskService";
+	import CwInvoiceForm from '@/views/cw/invoice/InvoiceForm'
 	import pick from "lodash.pick";
 export default {
 	title: "我的通知",
@@ -96,7 +98,8 @@ export default {
 		KeyCardPopup,
 		DepartPopup,
 		DepartProvePopup,
-		ProjectPlanForm
+		ProjectPlanForm,
+		CwInvoiceForm,
 	},
 	data() {
 		return {
@@ -128,7 +131,15 @@ export default {
 	methods: {
 		todo (row) {
 			// console.log('row', row)
-			if (row.taskName === '项目计划通知'){
+			if (row.taskName === '超期收款发票') {
+				// console.log('测试进来了')
+				this.$refs.cwInvoiceForm.init(false,row.defId)
+				this.inputForm = {
+					id: row.id
+				}
+				noticeService.stockUpdate(this.inputForm)
+				this.resetSearch()
+			}else if (row.taskName === '项目计划通知'){
 				// console.log('测试进来了')
 				this.$refs.projectPlanForm.init('view',row.defId)
 				this.inputForm = {

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

@@ -70,6 +70,7 @@
 	  <DepartPopup ref="departPopup"></DepartPopup>
 	  <DepartProvePopup ref="departProvePopup"></DepartProvePopup>
 	  <ProjectPlanForm ref="projectPlanForm"></ProjectPlanForm>
+	  <CwInvoiceForm  ref="cwInvoiceForm"></CwInvoiceForm>
   </div>
 </template>
 
@@ -83,6 +84,7 @@
   import DepartProvePopup from '@/views/human/depart/handover/DepartProvePopup'
   import pick from 'lodash.pick'
   import ProjectPlanForm from '@/views/cw/projectRecords/ProjectPlanForm'
+  import CwInvoiceForm from '@/views/cw/invoice/InvoiceForm'
   export default {
     data () {
       return {
@@ -119,7 +121,8 @@
 		KeyCardPopup,
 		DepartPopup,
 		DepartProvePopup,
-		ProjectPlanForm
+		ProjectPlanForm,
+		CwInvoiceForm,
     },
     methods: {
       // 获取数据列表
@@ -146,8 +149,17 @@
         this.refreshList()
       },
       todo (row) {
-        // console.log('row', row)
-		  if (row.taskName === '项目计划通知'){
+        console.log('row', row)
+		  if (row.taskName === '超期收款发票') {
+			  // console.log('测试进来了')
+			  console.log('id',row.defId)
+			  this.$refs.cwInvoiceForm.init(false,row.defId)
+			  this.inputForm = {
+				  id: row.id
+			  }
+			  noticeService.stockUpdate(this.inputForm)
+			  this.resetSearch()
+		  }else if (row.taskName === '项目计划通知'){
 			  // console.log('测试进来了')
 			  this.$refs.projectPlanForm.init('view',row.defId)
 			  this.inputForm = {