Prechádzať zdrojové kódy

会计发票添加红冲数据

user5 10 mesiacov pred
rodič
commit
75451f2668

+ 7 - 0
src/api/cw/invoice/CwFinanceInvoiceService.js

@@ -9,6 +9,13 @@ export default {
 			params: params,
 		});
 	},
+	redList: function (params) {
+		return request({
+			url: prefix + "/cw_finance/invoice/redList",
+			method: "get",
+			params: params,
+		});
+	},
 	queryById: function (id) {
 		return request({
 			url: prefix + "/cw_finance/invoice/queryById",

+ 63 - 3
src/views/cw/invoice/InvoiceForm.vue

@@ -290,6 +290,33 @@
 					</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="[
@@ -656,6 +683,7 @@
     <ProgramPageForm ref="programPageForm" @getProgram="getProgram"></ProgramPageForm>
     <ContractForm  ref="contractForm" @getContract="getContract"></ContractForm>
     <WorkClientForm  ref="workClientForm" @getWorkClientRadioChoose="getWorkClient"></WorkClientForm>
+	  <WorkInvoiceForm  ref="workInvoiceForm" @getWorkInvoiceRadioChoose="getWorkInvoice"></WorkInvoiceForm>
 	  <user-select1 ref="userSelect1" @doSubmit="selectUser1"></user-select1>
 	  <user-select2 ref="userSelect2" @doSubmit="selectUser2"></user-select2>
   </div>
@@ -668,6 +696,7 @@
   import UpLoadComponent from '@/views/common/UpLoadComponent'
   import ContractForm from '../projectRecords/WorkContractChooseCom'
   import WorkClientForm from '../workClientInfo/WorkClientChooseRadio'
+  import WorkInvoiceForm from './WorkInvoiceChooseRadio'
   import SelectUserTree from '@/views/utils/treeUserSelect'
   import SelectTree from '@/components/treeSelect/treeSelect.vue'
   import XEUtils from 'xe-utils'
@@ -728,7 +757,11 @@
           receivablesDate: '',
           receivablesStatus: '',
           isReceivables: '',
-          isMultiple: ''
+          isMultiple: '',
+			redInvoiceFlag: '0',	//是否红字发票
+			redInvoiceRelevancyNumber: '',	//红字发票编号
+			invoiceNumberStr: '',	//红字发票号
+			redInvoiceRelevancyId: '',	//红字发票id
         },
         programRow: '',
         bankList: [],
@@ -748,6 +781,7 @@
       ProgramPageForm,
       ContractForm,
       WorkClientForm,
+		WorkInvoiceForm,
       SelectUserTree,
       SelectTree,
       UpLoadComponent,
@@ -823,7 +857,11 @@
           receivablesDate: '',
           receivablesStatus: '',
           isReceivables: '',
-          isMultiple: ''
+          isMultiple: '',
+			redInvoiceFlag: '0',
+			redInvoiceRelevancyNumber: '',	//红字发票编号
+			invoiceNumberStr: '',	//红字发票号
+			redInvoiceRelevancyId: '',	//红字发票id
         }
         this.inputForm.id = id
         this.visible = true
@@ -836,6 +874,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'
+			  }
+
 			  console.log('this.inputForm ', this.inputForm)
             if (!this.commonJS.isEmpty(this.inputForm.billingWorkplaceRealId)) {
               this.bankList = []
@@ -1151,6 +1194,17 @@
       openWorkClientForm () {
         this.$refs.workClientForm.init(null, '')
       },
+
+		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()
+		},
       getWorkClient (row) {
         this.bankList = []
         this.inputForm.billingWorkplaceReal = row.name // 实际开票单位姓名
@@ -1341,7 +1395,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)) {

+ 65 - 2
src/views/cw/invoice/InvoiceFormTask.vue

@@ -300,6 +300,39 @@
             </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="[]"
@@ -767,6 +800,7 @@
     <ProgramPageForm ref="programPageForm" @getProgram="getProgram"></ProgramPageForm>
     <ContractForm  ref="contractForm" @getContract="getContract"></ContractForm>
     <WorkClientForm  ref="workClientForm" @getWorkClientRadioChoose="getWorkClient"></WorkClientForm>
+    <WorkInvoiceForm  ref="workInvoiceForm" @getWorkInvoiceRadioChoose="getWorkInvoice"></WorkInvoiceForm>
     <WorkClientBillingChooseRadio ref="billingChoose" @getBilling="getBilling"></WorkClientBillingChooseRadio>
 	  <user-select1 ref="userSelect1" @doSubmit="selectUser1"></user-select1>
 	  <user-select2 ref="userSelect2" @doSubmit="selectUser2"></user-select2>
@@ -814,6 +848,7 @@
   import UpLoadComponent from '@/views/common/UpLoadComponent'
   import ContractForm from '../projectRecords/WorkContractChooseCom'
   import WorkClientForm from '../workClientInfo/WorkClientChooseRadio'
+  import WorkInvoiceForm from './WorkInvoiceChooseRadio'
   import SelectUserTree from '@/views/utils/treeUserSelect'
   import SelectTree from '@/components/treeSelect/treeSelect.vue'
   import WorkClientBillingChooseRadio from '@/views/cw/workClientInfo/WorkClientBillingChooseRadio'
@@ -901,6 +936,10 @@
 				  actualDrawerEmailAddress: '',
 				  procDefId: '',
 				  procDefKey: '',
+				  redInvoiceFlag: '0',	//是否红字发票
+				  redInvoiceRelevancyNumber: '',	//红字发票编号
+				  invoiceNumberStr: '',	//红字发票号
+				  redInvoiceRelevancyId: '',	//红字发票id
 			  },
 			  programRow: '',
 			  bankList: [],
@@ -930,6 +969,7 @@
 		  ProgramPageForm,
 		  ContractForm,
 		  WorkClientForm,
+		  WorkInvoiceForm,
 		  SelectUserTree,
 		  SelectTree,
 		  UpLoadComponent,
@@ -1026,7 +1066,11 @@
 				  billingId: '',
 				  reportType: '',
 				  tenantId: '',
-				  actualDrawerEmailAddress: ''
+				  actualDrawerEmailAddress: '',
+				  redInvoiceFlag: '0',
+				  redInvoiceRelevancyNumber: '',	//红字发票编号
+				  invoiceNumberStr: '',	//红字发票号
+				  redInvoiceRelevancyId: '',	//红字发票id
 			  }
 			  // if (method === 'add') {
 			  //   this.title = `新建发票`
@@ -1080,6 +1124,9 @@
 					  if (this.commonJS.isEmpty(this.inputForm.billingType)) {
 						  this.inputForm.billingType = '1'
 					  }
+					  if (this.commonJS.isEmpty(this.inputForm.redInvoiceFlag)) {
+						  this.inputForm.redInvoiceFlag = '0'
+					  }
 					  if (this.commonJS.isEmpty(this.inputForm.receivablesType)) {
 						  this.inputForm.receivablesType = '2'
 					  }
@@ -1618,6 +1665,16 @@
 		  openWorkClientForm() {
 			  this.$refs.workClientForm.init(null, '')
 		  },
+		  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()
+		  },
 		  getWorkClient(row) {
 			  this.bankList = []
 			  this.inputForm.billingWorkplaceReal = row.name // 实际开票单位姓名
@@ -1886,7 +1943,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)) {

+ 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>

+ 1 - 0
src/views/cw/projectReportArchive/ProjectReportArchiveTaskForm.vue

@@ -648,6 +648,7 @@
           this.$refs.inputForm.resetFields()
           this.loading = true
 			const data = await this.projectReportArchiveService.queryById(this.inputForm.id)
+			console.log(data)
 			this.$refs.uploadComponent.clearUpload()
 			this.inputForm = this.recover(this.inputForm, data)
 			this.inputForm = JSON.parse(JSON.stringify(this.inputForm))

+ 2 - 0
src/views/cw/reimbursementApproval/info/CwProgramPageForm.vue

@@ -148,6 +148,8 @@
     },
     methods: {
       init (isShow, num) {
+      	console.log(isShow)
+      	console.log(num)
         if (this.commonJS.isEmpty(isShow)) {
           this.isShow = true
           this.checkType = '1'

+ 2 - 0
src/views/zs/reimbursement/info/InfoForm.vue

@@ -284,6 +284,7 @@
             </el-button>
           </el-divider>
           <el-row  :gutter="15" >
+			  <el-col :span="24">
             <vxe-table
               border
               show-footer
@@ -352,6 +353,7 @@
                 </template>
               </vxe-table-column>
             </vxe-table>
+			  </el-col>
           </el-row>
         </div>
         <div v-if="inputForm.sourceType === '4'">

+ 2 - 0
src/views/zs/reimbursement/info/InfoFormDetail.vue

@@ -278,6 +278,7 @@
             </el-button>
           </el-divider>
           <el-row  :gutter="15" >
+			  <el-col :span="24">
             <vxe-table
               border
               show-footer
@@ -346,6 +347,7 @@
                 </template>
               </vxe-table-column>
             </vxe-table>
+				  </el-col>
           </el-row>
         </div>
         <div v-if="inputForm.sourceType === '4'">

+ 19 - 8
src/views/zs/reimbursement/info/InfoList.vue

@@ -182,13 +182,20 @@
             </template>
           </vxe-column>
           <vxe-column width="130" title="报销类别" field="typeName" align="center"></vxe-column>
-          <vxe-column title="报销项目" field="projectName" align="center">
-            <template #default="scope">
-              <el-link  type="primary" :underline="false" v-if="hasPermission('zsReimbursement:info:view') && scope.row.projectId != undefined" @click="viewProject(scope.row.projectId)">{{scope.row.sourceType === '2' ? '' : scope.row.projectName}}</el-link>
-              <el-link  type="primary" :underline="false" v-else-if="hasPermission('zsReimbursement:info:view') && scope.row.projectId != undefined" @click="viewProject(scope.row.projectId)">{{scope.row.sourceType === '2' ? '' : scope.row.projectName}}</el-link>
-              <span v-else>{{scope.row.sourceType === '2' ? '' : scope.row.projectName}}</span>
-            </template>
-          </vxe-column>
+			<vxe-column min-width="180" title="报销项目" field="projectName" align="center">
+				<template #default="scope">
+					<el-link  type="primary" :underline="false" v-if="hasPermission('cw:reimbursement:info:view') && scope.row.projectId != undefined" @click="viewProject(scope.row.projectId)">{{scope.row.sourceType === '2' ? '' : scope.row.projectName}}</el-link>
+					<el-link  type="primary" :underline="false" v-else-if="hasPermission('cw:reimbursement:info:view') && scope.row.projectId != undefined" @click="viewProject(scope.row.projectId)">{{scope.row.sourceType === '2' ? '' : scope.row.projectName}}</el-link>
+					<span v-else>{{scope.row.sourceType === '2' ? '' : scope.row.projectName}}</span>
+				</template>
+			</vxe-column>
+			<vxe-column min-width="180" title="报销合同" field="projectName" align="center">
+				<template #default="scope">
+					<el-link  type="primary" :underline="false" v-if="hasPermission('cw:reimbursement:info:view') && scope.row.projectId != undefined" @click="viewContract(scope.row.projectId)">{{scope.row.sourceType === '2' ? scope.row.projectName : ''}}</el-link>
+					<span v-else>{{scope.row.sourceType === '2' ? scope.row.projectName : ''}}</span>
+				</template>
+			</vxe-column>
+			<vxe-column min-width="180" title="报告号" field="reportNumber" align="center"></vxe-column>
           <!--<vxe-column width="180" title="报销合同" field="projectName"align="center">
             <template slot-scope="scope">
               <el-link  type="primary" :underline="false" v-if="hasPermission('zsReimbursement:info:view') && scope.row.projectId != undefined" @click="viewContract(scope.row.projectId)">{{scope.row.sourceType === '2' ? scope.row.projectName : ''}}</el-link>
@@ -256,6 +263,7 @@
         <InfoUpdateForm ref="infoUpdateForm" @refreshDataList="refreshList"></InfoUpdateForm>
 <!--        <ProjectForm ref="projectForm" @refreshDataList="refreshList"></ProjectForm>-->
         <ProjectRecordsForm ref="projectRecordsForm" @refreshDataList="refreshList"></ProjectRecordsForm>
+		  <ProjectListForm ref="projectListForm"></ProjectListForm>
         <ContractNameForm ref="contractNameForm"></ContractNameForm>
 		  <user-select1 ref="userSelect1" @doSubmit="selectUser1"></user-select1>
 		  <user-select2 ref="userSelect2" @doSubmit="selectUser2"></user-select2>
@@ -271,6 +279,7 @@
   import UserSelect from '@/components/userSelect'
   import SelectTree from '@/components/treeSelect/treeSelect.vue'
   import ProjectChooseForm from '../projectInfo/ProjectChooseForm'
+  import ProjectListForm from '@/views/cw/reimbursementApproval/info/ProgramForm'
   import InfoForm from './InfoForm'
   import taskService from '@/api/flowable/taskService'
   import processService from '@/api/flowable/processService'
@@ -352,6 +361,7 @@
       InfoForm,
       // ProjectForm,
       ProjectRecordsForm,
+		ProjectListForm,
       UserSelect,
       ContractNameForm,
 		InfoUpdateForm,
@@ -602,7 +612,8 @@
       // 查看报销项目
       viewProject (id) {
         // this.$refs.projectForm.init('view', id)
-        this.$refs.projectRecordsForm.init('view', id)
+        //this.$refs.projectRecordsForm.init('view', id)
+		  this.$refs.projectListForm.init(id)
       },
 		checkIsZj(){
 			userService.isZj().then((data)=>{

+ 179 - 166
src/views/zs/reimbursement/info/ReimbursementForm.vue

@@ -50,7 +50,7 @@
                  ]">
             <el-select v-model="inputForm.sourceType" @change="changeSourceType" placeholder="请选择报销类型" style="width:100%;">
               <el-option
-                v-for="item in $dictUtils.getDictList('zs_reimbursement_source_type')"
+                v-for="item in $dictUtils.getDictList('cw_reimbursement_source_type')"
                 :key="item.value"
                 :label="item.label"
                 :value="item.value">
@@ -126,72 +126,74 @@
           </el-button>
         </el-divider>
         <el-row  :gutter="15" >
-          <vxe-table
-            border
-            show-footer
-            show-overflow
-            :footer-method="footerMethod"
-            ref="detailTable"
-            :key="detailKey"
-            class="vxe-table-element"
-            :data="inputForm.detailInfos"
-            style="margin-left: 5em"
-            highlight-current-row
-            :edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon:'_'}"
-            :edit-rules="validRules"
-          >
-            <vxe-table-column field="userName" title="报销人" :edit-render="{}" show-overflow="title" :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="{}" 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="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销类别', trigger:'blur'}]">
-              <template #edit="scope">
-                <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="{}" 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="{}">-->
-<!--              <template v-slot: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="{}" 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="{}" 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="{}" 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="{}" show-overflow="title">
-              <template #edit="scope">
-                <el-input v-model="scope.row.content" ></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,'detail')">删除</el-button>
-              </template>
-            </vxe-table-column>
-          </vxe-table>
+			<el-col :span="24">
+			  <vxe-table
+				border
+				show-footer
+				show-overflow
+				:footer-method="footerMethod"
+				ref="detailTable"
+				:key="detailKey"
+				class="vxe-table-element"
+				:data="inputForm.detailInfos"
+				style="margin-left: 5em"
+				highlight-current-row
+				:edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon:'_'}"
+				:edit-rules="validRules"
+			  >
+				<vxe-table-column field="userName" title="报销人" :edit-render="{}" show-overflow="title" :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="{}" 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="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销类别', trigger:'blur'}]">
+				  <template #edit="scope">
+					<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="{}" 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="{}">-->
+	<!--              <template v-slot: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="{}" 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="{}" 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="{}" 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="{}" show-overflow="title">
+				  <template #edit="scope">
+					<el-input v-model="scope.row.content" ></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,'detail')">删除</el-button>
+				  </template>
+				</vxe-table-column>
+			  </vxe-table>
+			</el-col>
         </el-row>
       </div>
       <div v-if="inputForm.sourceType === '2'">
@@ -278,72 +280,75 @@
           </el-button>
         </el-divider>
         <el-row  :gutter="15" >
-          <vxe-table
-            border
-            show-footer
-            show-overflow
-            :footer-method="footerMethod"
-            ref="detailTableReport"
-            :key="detailKeyReport"
-            class="vxe-table-element"
-            :data="inputForm.detailInfoReports"
-            style="margin-left: 5em"
-            highlight-current-row
-            :edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon:'_'}"
-            :edit-rules="validRules"
-          >
-            <vxe-table-column field="userName" title="报销人" :edit-render="{}" show-overflow="title" :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="{}" 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="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销类别', trigger:'blur'}]">
-              <template #edit="scope">
-                <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="{}" 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="{}" 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="{}" 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="{}" 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="{}" 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="{}" show-overflow="title">
-              <template #edit="scope">
-                <el-input v-model="scope.row.content" ></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,'report_detail')">删除</el-button>
-              </template>
-            </vxe-table-column>
-          </vxe-table>
+			<el-col :span="24">
+			  <vxe-table
+				border
+				show-footer
+				show-overflow
+				:footer-method="footerMethod"
+				ref="detailTableReport"
+				:key="detailKeyReport"
+				class="vxe-table-element"
+				:data="inputForm.detailInfoReports"
+				style="margin-left: 5em"
+				highlight-current-row
+				:edit-config="{trigger: 'click', mode: 'row', showStatus: true, autoClear: true, icon:'_'}"
+				:edit-rules="validRules"
+			  >
+				<vxe-table-column field="userName" title="报销人" :edit-render="{}" show-overflow="title" :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="{}" 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="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销类别', trigger:'blur'}]">
+				  <template #edit="scope">
+					<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="{}" show-overflow="title" :rules="[{required: true, message:'请选择报销项目', trigger:'blur'}]">
+					  <template v-slot: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="{}" 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="{}" 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="{}" 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="{}" 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="{}" show-overflow="title">
+				  <template #edit="scope">
+					<el-input v-model="scope.row.content" ></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,'report_detail')">删除</el-button>
+				  </template>
+				</vxe-table-column>
+			  </vxe-table>
+			</el-col>
         </el-row>
       </div>
       <div v-if="inputForm.sourceType === '4'">
@@ -646,7 +651,7 @@
 		</div>
 <!--      <ProgramPageForm ref="programPageForm" @getProgram="getProgram"></ProgramPageForm>-->
       <CwProgramPageForm ref="cwProgramPageForm" @getProgram="getProgram"></CwProgramPageForm>
-      <CwProgramPageForm ref="cwProgramPageForm3" @getProgram="getProgram3"></CwProgramPageForm>
+		<CwProgramPageForm2 ref="cwProgramPageForm3" @getProgram="getProgram3"></CwProgramPageForm2>
       <CwProgramPageForm ref="cwProgramPageForm4" @getProgram="getProgram4"></CwProgramPageForm>
       <CwProgramPageForm ref="cwProgramPageForm5" @getProgram="getProgram5"></CwProgramPageForm>
 <!--      <ReimbursementTypePullForm ref="reimbursementTypePullForm" @getProgramForType="getProgramForType"></ReimbursementTypePullForm>-->
@@ -674,17 +679,20 @@
 </template>
 
 <script>
-  import ReportNoChooseRadio from './ReportNoChooseRadio'
+  import ReportNoChooseRadio from '@/views/cw/reimbursementApproval/info/ReportNoChooseRadio'
   // import UserSelectV2 from '@/components/userSelect'
   import ReimbursementService from '@/api/zs/reimbursement/ReimbursementService'
   import ReimbursementTypeService from '@/api/zs/reimbursement/ReimbursementTypeService'
   import InvoiceReimbursementUpLoadComponent from '@/views/common/InvoiceReimbursementUpLoadComponent'
+  import ReimbursementApprovalTypeService from '@/api/cw/reimbursementApproval/ReimbursementApprovalTypeService'
   import UpLoadComponent from '@/views/common/UpLoadComponent'
   // import SelectUserTree from '@/views/utils/treeUserSelect'
   // import SelectTree from '@/components/treeSelect/treeSelect.vue'
   import XEUtils from 'xe-utils'
   // import userService from '@/api/sys/userService'
-  import CwProgramPageForm from './CwProgramPageForm'
+
+  import CwProgramPageForm from '@/views/cw/reimbursementApproval/info/CwProgramPageForm'
+  import CwProgramPageForm2 from '@/views/cw/reimbursementApproval/info/CwProgramPageForm2'
   import CwReimbursementTypePullForm from './CwReimbursementTypePullForm'
   import UserPullForm from '@/views/finance/invoice/UserPullForm'
   import CommonApi from '@/api/cw/common/CommonApi'
@@ -831,6 +839,7 @@
     // reimbursementService: null,
     // reimbursementTypeService: null,
     reimbursementTypeService: null,
+	  reimbursementApprovalTypeService: null,
     // userService: null,
     commonApi: null,
     // materialManagementService: null,
@@ -840,6 +849,7 @@
       // this.userService = new UserService()
       // this.reimbursementTypeService = new ReimbursementTypeService()
       this.reimbursementTypeService = new ReimbursementTypeService()
+		this.reimbursementApprovalTypeService = new ReimbursementApprovalTypeService()
       this.commonApi = new CommonApi()
       // this.materialManagementService = new MaterialManagementService()
     },
@@ -850,6 +860,7 @@
       // SelectTree,
       // ProgramPageForm,
       CwProgramPageForm,
+		CwProgramPageForm2,
       // ReimbursementTypePullForm,
       CwReimbursementTypePullForm,
       UserPullForm,
@@ -1627,7 +1638,7 @@
           return
         }
         this.indexRow = rowIndex
-        this.reimbursementTypeService.findById(row.typeId).then((data) => {
+        this.reimbursementApprovalTypeService.findById(row.typeId).then((data) => {
 
           let i = data.sort.toString()
           i = i.substring(0, 1)
@@ -1637,27 +1648,27 @@
             this.$refs.cwProgramPageForm.init('2', false)
           } else {
             // 打开单选组件
-            this.$refs.cwProgramPageForm.init('1', false)
+            this.$refs.cwProgramPageForm.init('1', true)
           }
         })
       },
       openProgramPageForm3 (rowIndex, row) {
-        if (this.commonJS.isEmpty(row.typeName)) {
-          this.$message.error('请选择报销类型')
-          return
-        }
-        this.indexRow = rowIndex
-        this.reimbursementTypeService.findById(row.typeId).then((data) => {
-          let i = data.sort.toString()
-          i = i.substring(0, 1)
-          // 非业务报销
-          if (i !== '1') {
-            this.$refs.cwProgramPageForm3.init('2', false)
-          } else {
-            // 打开单选组件
-            this.$refs.cwProgramPageForm3.init('1', false)
-          }
-        })
+		  if (this.commonJS.isEmpty(row.typeName)) {
+			  this.$message.error('请选择报销类型')
+			  return
+		  }
+		  this.indexRow = rowIndex
+		  this.reimbursementApprovalTypeService.findById(row.typeId).then((data) => {
+			  let i = data.sort.toString()
+			  i = i.substring(0, 1)
+			  // 非业务报销
+			  if (i !== '1') {
+				  this.$refs.cwProgramPageForm3.init('2', false)
+			  } else {
+				  // 打开单选组件
+				  this.$refs.cwProgramPageForm3.init('1', false)
+			  }
+		  })
       },
       openProgramPageForm4 (rowIndex, row) {
         if (this.commonJS.isEmpty(row.typeName)) {
@@ -1678,19 +1689,21 @@
       openContractForm (rowIndex, row) {
         this.$refs.workContractChooseCom.init(rowIndex)
       },
-      getProgram (rows) {
-        this.inputForm.detailInfos[this.indexRow].projectId = rows[0].id
-        this.inputForm.detailInfos[this.indexRow].projectName = rows[0].projectName
-        this.inputForm.detailInfos[this.indexRow].reportNumber = rows[0].reportNumber
-        this.indexRow = ''
-        this.$forceUpdate()
-      },
+		getProgram (rows) {
+			if (this.commonJS.isNotEmpty(rows)) {
+				this.inputForm.detailInfos[this.indexRow].projectId = rows.map(item => { return item.id }).join(',')
+				this.inputForm.detailInfos[this.indexRow].projectName = rows.map(item => { return item.projectName }).join(',')
+				// this.inputForm.detailInfos[this.indexRow].reportNumber = rows.map(item => { return item.reportNumber }).join(',')
+			}
+			this.indexRow = ''
+			this.$forceUpdate()
+		},
       getProgram3 (rows) {
-        this.inputForm.detailInfoReports[this.indexRow].projectId = rows[0].id
-        this.inputForm.detailInfoReports[this.indexRow].projectName = rows[0].projectName
-        this.inputForm.detailInfoReports[this.indexRow].reportNumber = rows[0].reportNumber
-        this.indexRow = ''
-        this.$forceUpdate()
+		  this.inputForm.detailInfoReports[this.indexRow].projectId = rows.id
+		  this.inputForm.detailInfoReports[this.indexRow].projectName = rows.projectName
+		  this.inputForm.detailInfoReports[this.indexRow].reportNumber = rows.reportNumber
+		  this.indexRow = ''
+		  this.$forceUpdate()
       },
       getProgram4 (rows) {
         this.inputForm.detailInfoOthers[this.indexRow].projectId = rows[0].id