Przeglądaj źródła

项目评估以及项目咨询前端

lizhenhao 2 lat temu
rodzic
commit
6aeaa92169

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

@@ -36,4 +36,11 @@ export default class PostService {
       data: data
     })
   }
+  exportTemplate () {
+    return request({
+      url: '/sys/project/import/template',
+      method: 'get',
+      responseType: 'blob'
+    })
+  }
 }

+ 57 - 40
src/views/modules/sys/project/AssessForm.vue

@@ -14,7 +14,6 @@
           <el-col :span="12">
             <el-form-item label="客户名称" prop="customerName"
                           :rules="[
-                  {required: true, message:'客户名称不能为空', trigger:'blur'}
                  ]">
               <el-input v-model="inputForm.customerName" placeholder="请填写客户名称"     ></el-input>
             </el-form-item>
@@ -30,7 +29,6 @@
           <el-col :span="12">
             <el-form-item label="评估目的" prop="evaluationObjective"
                           :rules="[
-                  {required: true, message:'评估目的不能为空', trigger:'blur'}
                  ]">
               <el-input v-model="inputForm.evaluationObjective" placeholder="请填写评估目的"     ></el-input>
             </el-form-item>
@@ -38,7 +36,6 @@
           <el-col :span="12">
             <el-form-item label="项目类型" prop="projectType"
                           :rules="[
-                  {required: true, message:'项目类型不能为空', trigger:'blur'}
                  ]">
               <el-input v-model="inputForm.projectType" placeholder="请填写项目类型"     ></el-input>
             </el-form-item>
@@ -48,8 +45,8 @@
                           :rules="[
 
                  ]">
-<!--              {required: true, message:'评估基准日不能为空', trigger:'blur'}-->
-<!--              <el-input v-model="inputForm.evaluationBaseDate" placeholder="请填写评估基准日"     ></el-input>-->
+              <!--              {required: true, message:'评估基准日不能为空', trigger:'blur'}-->
+              <!--              <el-input v-model="inputForm.evaluationBaseDate" placeholder="请填写评估基准日"     ></el-input>-->
               <el-date-picker
                 style="width:100%;"
                 v-model="inputForm.evaluationBaseDateUi"
@@ -64,8 +61,8 @@
                           :rules="[
 
                  ]">
-<!--              {required: true, message:'评估报告日不能为空', trigger:'blur'}-->
-<!--              <el-input v-model="inputForm.evaluationReportDate" placeholder="请填写评估报告日"     ></el-input>-->
+              <!--              {required: true, message:'评估报告日不能为空', trigger:'blur'}-->
+              <!--              <el-input v-model="inputForm.evaluationReportDate" placeholder="请填写评估报告日"     ></el-input>-->
               <el-date-picker
                 style="width:100%;"
                 v-model="inputForm.evaluationReportDateUi"
@@ -78,7 +75,6 @@
           <el-col :span="12">
             <el-form-item label="协议号" prop="protocolNum"
                           :rules="[
-                  {required: true, message:'协议号不能为空', trigger:'blur'}
                  ]">
               <el-input v-model="inputForm.protocolNum" placeholder="请填写协议号"     ></el-input>
             </el-form-item>
@@ -94,7 +90,6 @@
           <el-col :span="12">
             <el-form-item label="项目负责人" prop="projectHead"
                           :rules="[
-                  {required: true, message:'项目负责人不能为空', trigger:'blur'}
                  ]">
               <el-input v-model="inputForm.projectHead" placeholder="请填写项目负责人"     ></el-input>
             </el-form-item>
@@ -102,7 +97,6 @@
           <el-col :span="12">
             <el-form-item label="废旧物资评估(万元)" prop="waystEvaluation"
                           :rules="[
-                  {required: true, message:'废旧物资评估不能为空', trigger:'blur'}
                  ]">
               <el-input v-model="inputForm.waystEvaluation" placeholder="请填写废旧物资评估"     ></el-input>
             </el-form-item>
@@ -110,7 +104,6 @@
           <el-col :span="12">
             <el-form-item label="固定资产评估(万元)" prop="fixedAssetsEvaluation"
                           :rules="[
-                  {required: true, message:'固定资产评估不能为空', trigger:'blur'}
                  ]">
               <el-input v-model="inputForm.fixedAssetsEvaluation" placeholder="请填写固定资产评估"     ></el-input>
             </el-form-item>
@@ -118,7 +111,6 @@
           <el-col :span="12">
             <el-form-item label="净资产评估" prop="netAssetsEvaluation"
                           :rules="[
-                  {required: true, message:'净资产评估不能为空', trigger:'blur'}
                  ]">
               <el-input v-model="inputForm.netAssetsEvaluation" placeholder="请填写净资产评估"     ></el-input>
             </el-form-item>
@@ -126,7 +118,6 @@
           <el-col :span="12">
             <el-form-item label="租金评估(万/年)" prop="rentEvaluation"
                           :rules="[
-                  {required: true, message:'租金评估不能为空', trigger:'blur'}
                  ]">
               <el-input v-model="inputForm.rentEvaluation" placeholder="请填写租金评估"     ></el-input>
             </el-form-item>
@@ -134,7 +125,6 @@
           <el-col :span="12">
             <el-form-item label="司法鉴定" prop="forensics"
                           :rules="[
-                  {required: true, message:'司法鉴定不能为空', trigger:'blur'}
                  ]">
               <el-input v-model="inputForm.forensics" placeholder="请填写司法鉴定"     ></el-input>
             </el-form-item>
@@ -142,7 +132,6 @@
           <el-col :span="12">
             <el-form-item label="报告收费(元)" prop="reportCharges"
                           :rules="[
-                  {required: true, message:'报告收费不能为空', trigger:'blur'}
                  ]">
               <el-input v-model="inputForm.reportCharges" placeholder="请填写报告收费"     ></el-input>
             </el-form-item>
@@ -150,7 +139,6 @@
           <el-col :span="12">
             <el-form-item label="当前处理人" prop="currentDisposePerson"
                           :rules="[
-                  {required: true, message:'当前处理人不能为空', trigger:'blur'}
                  ]">
               <el-input v-model="inputForm.currentDisposePerson" placeholder="请填写当前处理人"     ></el-input>
             </el-form-item>
@@ -158,7 +146,6 @@
           <el-col :span="12">
             <el-form-item label="是否开票" prop="isInvoice"
                           :rules="[
-                  {required: true, message:'是否开票不能为空', trigger:'blur'}
                  ]">
               <el-radio-group v-model="inputForm.isInvoice">
                 <el-radio v-for="item in $dictUtils.getDictList('yes_no')" :label="item.value" :key="item.id">{{item.label}}</el-radio>
@@ -169,7 +156,7 @@
             <el-form-item label="开票日期" prop="invoiceDateUi"
                           :rules="[
                  ]">
-<!--              {required: true, message:'开票日期不能为空', trigger:'blur'}-->
+              <!--              {required: true, message:'开票日期不能为空', trigger:'blur'}-->
               <!--              <el-input v-model="inputForm.invoiceDate" placeholder="请填写开票日期"     ></el-input>-->
               <el-date-picker
                 style="width:100%;"
@@ -183,7 +170,6 @@
           <el-col :span="12">
             <el-form-item label="预估/实际收费(元)" prop="actualCharges"
                           :rules="[
-                  {required: true, message:'预估/实际收费不能为空', trigger:'blur'}
                  ]">
               <el-input v-model="inputForm.actualCharges" placeholder="请填写预估/实际收费"     ></el-input>
             </el-form-item>
@@ -191,9 +177,8 @@
           <el-col :span="12">
             <el-form-item label="合同是否存档" prop="isContractArchive"
                           :rules="[
-                  {required: true, message:'合同是否存档不能为空', trigger:'blur'}
                  ]">
-<!--              <el-input v-model="inputForm.isContractArchive" placeholder="请填写合同是否存档"     ></el-input>-->
+              <!--              <el-input v-model="inputForm.isContractArchive" placeholder="请填写合同是否存档"     ></el-input>-->
               <el-radio-group v-model="inputForm.isContractArchive">
                 <el-radio v-for="item in $dictUtils.getDictList('yes_no')" :label="item.value" :key="item.id">{{item.label}}</el-radio>
               </el-radio-group>
@@ -202,9 +187,8 @@
           <el-col :span="12">
             <el-form-item label="底稿是否完好" prop="isPapersIntact"
                           :rules="[
-                  {required: true, message:'底稿是否完好不能为空', trigger:'blur'}
                  ]">
-<!--              <el-input v-model="inputForm.isPapersIntact" placeholder="请填写底稿是否完好"     ></el-input>-->
+              <!--              <el-input v-model="inputForm.isPapersIntact" placeholder="请填写底稿是否完好"     ></el-input>-->
               <el-radio-group v-model="inputForm.isPapersIntact">
                 <el-radio v-for="item in $dictUtils.getDictList('yes_no')" :label="item.value" :key="item.id">{{item.label}}</el-radio>
               </el-radio-group>
@@ -213,9 +197,8 @@
           <el-col :span="12">
             <el-form-item label="底稿是否归档" prop="isPapersArchive"
                           :rules="[
-                  {required: true, message:'底稿是否归档不能为空', trigger:'blur'}
                  ]">
-<!--              <el-input v-model="inputForm.isPapersArchive" placeholder="请填写底稿是否归档"     ></el-input>-->
+              <!--              <el-input v-model="inputForm.isPapersArchive" placeholder="请填写底稿是否归档"     ></el-input>-->
               <el-radio-group v-model="inputForm.isPapersArchive">
                 <el-radio v-for="item in $dictUtils.getDictList('yes_no')" :label="item.value" :key="item.id">{{item.label}}</el-radio>
               </el-radio-group>
@@ -224,7 +207,6 @@
           <el-col :span="12">
             <el-form-item label="报销外勤天数" prop="opsAmount"
                           :rules="[
-                  {required: true, message:'报销外勤天数不能为空', trigger:'blur'}
                  ]">
               <el-input v-model="inputForm.opsAmount" placeholder="请填写报销外勤天数"     ></el-input>
             </el-form-item>
@@ -232,9 +214,8 @@
           <el-col :span="12">
             <el-form-item label="外勤是否已经报销" prop="isOpsReimbursement"
                           :rules="[
-                  {required: true, message:'外勤是否已经报销不能为空', trigger:'blur'}
                  ]">
-<!--              <el-input v-model="inputForm.isOpsReimbursement" placeholder="请填写外勤是否已经报销"     ></el-input>-->
+              <!--              <el-input v-model="inputForm.isOpsReimbursement" placeholder="请填写外勤是否已经报销"     ></el-input>-->
               <el-radio-group v-model="inputForm.isOpsReimbursement">
                 <el-radio v-for="item in $dictUtils.getDictList('yes_no')" :label="item.value" :key="item.id">{{item.label}}</el-radio>
               </el-radio-group>
@@ -243,9 +224,8 @@
           <el-col :span="12">
             <el-form-item label="是否已经报销提成" prop="isCommissionReimbursement"
                           :rules="[
-                          {required: true, message:'是否已经报销提成不能为空', trigger:'blur'}
                  ]">
-<!--              <el-input v-model="inputForm.isCommissionReimbursement" placeholder="请填写是否已经报销提成"     ></el-input>-->
+              <!--              <el-input v-model="inputForm.isCommissionReimbursement" placeholder="请填写是否已经报销提成"     ></el-input>-->
               <el-radio-group v-model="inputForm.isCommissionReimbursement">
                 <el-radio v-for="item in $dictUtils.getDictList('yes_no')" :label="item.value" :key="item.id">{{item.label}}</el-radio>
               </el-radio-group>
@@ -254,7 +234,6 @@
           <el-col :span="12">
             <el-form-item label="已报销金额" prop="reimbursementAmount"
                           :rules="[
-                  {required: true, message:'已报销金额不能为空', trigger:'blur'}
                  ]">
               <el-input v-model="inputForm.reimbursementAmount" placeholder="请填写已报销金额"     ></el-input>
             </el-form-item>
@@ -262,7 +241,6 @@
           <el-col :span="12">
             <el-form-item label="未报销金额" prop="unreimbursedAmount"
                           :rules="[
-                  {required: true, message:'未报销金额不能为空', trigger:'blur'}
                  ]">
               <el-input v-model="inputForm.unreimbursedAmount" placeholder="请填写未报销金额"     ></el-input>
             </el-form-item>
@@ -270,7 +248,6 @@
           <el-col :span="12">
             <el-form-item label="报销单号" prop="reimbursementNum"
                           :rules="[
-                  {required: true, message:'报销单号不能为空', trigger:'blur'}
                  ]">
               <el-input v-model="inputForm.reimbursementNum" placeholder="请填写报销单号"     ></el-input>
             </el-form-item>
@@ -278,9 +255,8 @@
           <el-col :span="12">
             <el-form-item label="报销日期" prop="reimbursementDateUi"
                           :rules="[
-                  {required: true, message:'报销日期不能为空', trigger:'blur'}
                  ]">
-<!--              <el-input v-model="inputForm.reimbursementDate" placeholder="请填写报销日期"     ></el-input>-->
+              <!--              <el-input v-model="inputForm.reimbursementDate" placeholder="请填写报销日期"     ></el-input>-->
               <el-date-picker
                 style="width:100%;"
                 v-model="inputForm.reimbursementDateUi"
@@ -293,7 +269,6 @@
           <el-col :span="12">
             <el-form-item label="签字评估师1" prop="evaluationPersonOne"
                           :rules="[
-                  {required: true, message:'签字评估师1不能为空', trigger:'blur'}
                  ]">
               <el-input v-model="inputForm.evaluationPersonOne" placeholder="请填写签字评估师1"     ></el-input>
             </el-form-item>
@@ -301,7 +276,6 @@
           <el-col :span="12">
             <el-form-item label="签字评估师2" prop="evaluationPersonTwo"
                           :rules="[
-                  {required: true, message:'签字评估师2不能为空', trigger:'blur'}
                  ]">
               <el-input v-model="inputForm.evaluationPersonTwo" placeholder="请填写签字评估师2"     ></el-input>
             </el-form-item>
@@ -309,9 +283,8 @@
           <el-col :span="12">
             <el-form-item label="项目状态" prop="status"
                           :rules="[
-                  {required: true, message:'项目状态不能为空', trigger:'blur'}
                  ]">
-<!--              <el-input v-model="inputForm.status" placeholder="请填写项目状态"     ></el-input>-->
+              <!--              <el-input v-model="inputForm.status" placeholder="请填写项目状态"     ></el-input>-->
               <el-select v-model="inputForm.status" placeholder="请选择">
                 <el-option
                   v-for="item in $dictUtils.getDictList('project_status')"
@@ -402,7 +375,8 @@
           assessReportMessage: '',
           assessBaseMessage: '',
           invoiceMessage: '',
-          isCommissionReimbursement: ''
+          isCommissionReimbursement: '',
+          itemType: ''
         }
       }
     },
@@ -413,6 +387,48 @@
     methods: {
       init (method, id) {
         this.method = method
+        this.inputForm = {
+          customerName: '',
+          projectName: '',
+          evaluationObjective: '',
+          projectType: '',
+          evaluationBaseDate: '',
+          evaluationBaseDateUi: '',
+          evaluationReportDate: '',
+          evaluationReportDateUi: '',
+          protocolNum: '',
+          documentNum: '',
+          projectHead: '',
+          waystEvaluation: '',
+          fixedAssetsEvaluation: '',
+          netAssetsEvaluation: '',
+          rentEvaluation: '',
+          forensics: '',
+          reportCharges: '',
+          currentDisposePerson: '',
+          isInvoice: '',
+          invoiceDate: '',
+          invoiceDateUi: '',
+          actualCharges: '',
+          isContractArchive: '',
+          isPapersIntact: '',
+          isPapersArchive: '',
+          opsAmount: '',
+          isOpsReimbursement: '',
+          reimbursementAmount: '',
+          unreimbursedAmount: '',
+          reimbursementNum: '',
+          reimbursementDate: '',
+          reimbursementDateUi: '',
+          evaluationPersonOne: '',
+          evaluationPersonTwo: '',
+          status: '',
+          assessReportMessage: '',
+          assessBaseMessage: '',
+          invoiceMessage: '',
+          isCommissionReimbursement: '',
+          itemType: ''
+        }
         this.inputForm.id = id
         if (method === 'add') {
           this.title = `新建项目`
@@ -444,6 +460,7 @@
         this.$refs['inputForm'].validate((valid) => {
           if (valid) {
             this.loading = true
+            this.inputForm.itemType = '1'
             this.projectService.save(this.inputForm).then(({data}) => {
               this.close()
               this.$message.success(data)

+ 8 - 3
src/views/modules/sys/project/AssessList.vue

@@ -73,8 +73,8 @@
                   </template>
                 </vxe-column>
                 <vxe-column width="130px"  title="项目负责人" field="projectHead" sortable> </vxe-column>
-                <vxe-column width="130px"  title="评估报告日" field="assessReportMessage" sortable> </vxe-column>
-                <vxe-column width="130px"  title="开票日期" field="invoiceMessage" sortable> </vxe-column>
+                <vxe-column width="130px"  title="评估报告日" field="evaluationReportDate" sortable> </vxe-column>
+                <vxe-column width="130px"  title="开票日期" field="invoiceDate" sortable> </vxe-column>
                 <vxe-column width="130px"   title="状态" field="status" sortable>
                   <template slot-scope="scope">
                     {{ $dictUtils.getDictLabel("project_status", scope.row.status, '-') }}
@@ -157,6 +157,7 @@
           'current': this.tablePage.currentPage,
           'size': this.tablePage.pageSize,
           'orders': this.tablePage.orders,
+          'itemType': '1',
           ...this.searchForm
         }).then(({data}) => {
           this.dataList = data.records
@@ -215,8 +216,12 @@
         // 处理表单
         const formBody = new FormData()
         formBody.append('file', file)
+        this.loading = true
         this.projectService.importExcel(formBody).then(result => {
-          this.$message.success(result)
+          this.$message.success(result.data)
+          this.loading = false
+        }).catch(() => {
+          this.loading = false
         })
       },
       resetSearch () {

+ 481 - 0
src/views/modules/sys/project/ConsultationForm.vue

@@ -0,0 +1,481 @@
+<template>
+  <div>
+    <el-dialog
+      :title="title"
+      :close-on-click-modal="false"
+      v-dialogDrag
+      width="800px"
+      @close="close"
+      @keyup.enter.native="doSubmit"
+      :visible.sync="visible">
+      <el-form size="middle" :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''"  :disabled="method==='view'"
+               label-width="150px">
+        <el-row  :gutter="15">
+          <el-col :span="12">
+            <el-form-item label="客户名称" prop="customerName"
+                          :rules="[
+                 ]">
+              <el-input v-model="inputForm.customerName" placeholder="请填写客户名称"     ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="项目名称" prop="projectName"
+                          :rules="[
+                  {required: true, message:'项目名称不能为空', trigger:'blur'}
+                 ]">
+              <el-input v-model="inputForm.projectName" placeholder="请填写项目名称"     ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="评估目的" prop="evaluationObjective"
+                          :rules="[
+                 ]">
+              <el-input v-model="inputForm.evaluationObjective" placeholder="请填写评估目的"     ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="项目类型" prop="projectType"
+                          :rules="[
+                 ]">
+              <el-input v-model="inputForm.projectType" placeholder="请填写项目类型"     ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="评估基准日" prop="evaluationBaseDateUi"
+                          :rules="[
+
+                 ]">
+<!--              {required: true, message:'评估基准日不能为空', trigger:'blur'}-->
+<!--              <el-input v-model="inputForm.evaluationBaseDate" placeholder="请填写评估基准日"     ></el-input>-->
+              <el-date-picker
+                style="width:100%;"
+                v-model="inputForm.evaluationBaseDateUi"
+                type="datetime"
+                value-format="yyyy-MM-dd HH:mm:ss"
+                placeholder="选择日期时间">
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="评估报告日" prop="evaluationReportDateUi"
+                          :rules="[
+
+                 ]">
+<!--              {required: true, message:'评估报告日不能为空', trigger:'blur'}-->
+<!--              <el-input v-model="inputForm.evaluationReportDate" placeholder="请填写评估报告日"     ></el-input>-->
+              <el-date-picker
+                style="width:100%;"
+                v-model="inputForm.evaluationReportDateUi"
+                type="datetime"
+                value-format="yyyy-MM-dd HH:mm:ss"
+                placeholder="选择日期时间">
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="协议号" prop="protocolNum"
+                          :rules="[
+                 ]">
+              <el-input v-model="inputForm.protocolNum" placeholder="请填写协议号"     ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="文号" prop="documentNum"
+                          :rules="[
+                  {required: true, message:'文号不能为空', trigger:'blur'}
+                 ]">
+              <el-input v-model="inputForm.documentNum" placeholder="请填写文号"     ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="项目负责人" prop="projectHead"
+                          :rules="[
+                 ]">
+              <el-input v-model="inputForm.projectHead" placeholder="请填写项目负责人"     ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="废旧物资评估(万元)" prop="waystEvaluation"
+                          :rules="[
+                 ]">
+              <el-input v-model="inputForm.waystEvaluation" placeholder="请填写废旧物资评估"     ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="固定资产评估(万元)" prop="fixedAssetsEvaluation"
+                          :rules="[
+                 ]">
+              <el-input v-model="inputForm.fixedAssetsEvaluation" placeholder="请填写固定资产评估"     ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="净资产评估" prop="netAssetsEvaluation"
+                          :rules="[
+                 ]">
+              <el-input v-model="inputForm.netAssetsEvaluation" placeholder="请填写净资产评估"     ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="租金评估(万/年)" prop="rentEvaluation"
+                          :rules="[
+                 ]">
+              <el-input v-model="inputForm.rentEvaluation" placeholder="请填写租金评估"     ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="司法鉴定" prop="forensics"
+                          :rules="[
+                 ]">
+              <el-input v-model="inputForm.forensics" placeholder="请填写司法鉴定"     ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="报告收费(元)" prop="reportCharges"
+                          :rules="[
+                 ]">
+              <el-input v-model="inputForm.reportCharges" placeholder="请填写报告收费"     ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="当前处理人" prop="currentDisposePerson"
+                          :rules="[
+                 ]">
+              <el-input v-model="inputForm.currentDisposePerson" placeholder="请填写当前处理人"     ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="是否开票" prop="isInvoice"
+                          :rules="[
+                 ]">
+              <el-radio-group v-model="inputForm.isInvoice">
+                <el-radio v-for="item in $dictUtils.getDictList('yes_no')" :label="item.value" :key="item.id">{{item.label}}</el-radio>
+              </el-radio-group>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="开票日期" prop="invoiceDateUi"
+                          :rules="[
+                 ]">
+<!--              {required: true, message:'开票日期不能为空', trigger:'blur'}-->
+              <!--              <el-input v-model="inputForm.invoiceDate" placeholder="请填写开票日期"     ></el-input>-->
+              <el-date-picker
+                style="width:100%;"
+                v-model="inputForm.invoiceDateUi"
+                type="datetime"
+                value-format="yyyy-MM-dd HH:mm:ss"
+                placeholder="选择日期时间">
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="预估/实际收费(元)" prop="actualCharges"
+                          :rules="[
+                 ]">
+              <el-input v-model="inputForm.actualCharges" placeholder="请填写预估/实际收费"     ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="合同是否存档" prop="isContractArchive"
+                          :rules="[
+                 ]">
+<!--              <el-input v-model="inputForm.isContractArchive" placeholder="请填写合同是否存档"     ></el-input>-->
+              <el-radio-group v-model="inputForm.isContractArchive">
+                <el-radio v-for="item in $dictUtils.getDictList('yes_no')" :label="item.value" :key="item.id">{{item.label}}</el-radio>
+              </el-radio-group>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="底稿是否完好" prop="isPapersIntact"
+                          :rules="[
+                 ]">
+<!--              <el-input v-model="inputForm.isPapersIntact" placeholder="请填写底稿是否完好"     ></el-input>-->
+              <el-radio-group v-model="inputForm.isPapersIntact">
+                <el-radio v-for="item in $dictUtils.getDictList('yes_no')" :label="item.value" :key="item.id">{{item.label}}</el-radio>
+              </el-radio-group>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="底稿是否归档" prop="isPapersArchive"
+                          :rules="[
+                 ]">
+<!--              <el-input v-model="inputForm.isPapersArchive" placeholder="请填写底稿是否归档"     ></el-input>-->
+              <el-radio-group v-model="inputForm.isPapersArchive">
+                <el-radio v-for="item in $dictUtils.getDictList('yes_no')" :label="item.value" :key="item.id">{{item.label}}</el-radio>
+              </el-radio-group>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="报销外勤天数" prop="opsAmount"
+                          :rules="[
+                 ]">
+              <el-input v-model="inputForm.opsAmount" placeholder="请填写报销外勤天数"     ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="外勤是否已经报销" prop="isOpsReimbursement"
+                          :rules="[
+                 ]">
+<!--              <el-input v-model="inputForm.isOpsReimbursement" placeholder="请填写外勤是否已经报销"     ></el-input>-->
+              <el-radio-group v-model="inputForm.isOpsReimbursement">
+                <el-radio v-for="item in $dictUtils.getDictList('yes_no')" :label="item.value" :key="item.id">{{item.label}}</el-radio>
+              </el-radio-group>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="是否已经报销提成" prop="isCommissionReimbursement"
+                          :rules="[
+                 ]">
+<!--              <el-input v-model="inputForm.isCommissionReimbursement" placeholder="请填写是否已经报销提成"     ></el-input>-->
+              <el-radio-group v-model="inputForm.isCommissionReimbursement">
+                <el-radio v-for="item in $dictUtils.getDictList('yes_no')" :label="item.value" :key="item.id">{{item.label}}</el-radio>
+              </el-radio-group>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="已报销金额" prop="reimbursementAmount"
+                          :rules="[
+                 ]">
+              <el-input v-model="inputForm.reimbursementAmount" placeholder="请填写已报销金额"     ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="未报销金额" prop="unreimbursedAmount"
+                          :rules="[
+                 ]">
+              <el-input v-model="inputForm.unreimbursedAmount" placeholder="请填写未报销金额"     ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="报销单号" prop="reimbursementNum"
+                          :rules="[
+                 ]">
+              <el-input v-model="inputForm.reimbursementNum" placeholder="请填写报销单号"     ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="报销日期" prop="reimbursementDateUi"
+                          :rules="[
+                 ]">
+<!--              <el-input v-model="inputForm.reimbursementDate" placeholder="请填写报销日期"     ></el-input>-->
+              <el-date-picker
+                style="width:100%;"
+                v-model="inputForm.reimbursementDateUi"
+                type="datetime"
+                value-format="yyyy-MM-dd HH:mm:ss"
+                placeholder="选择日期时间">
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="签字评估师1" prop="evaluationPersonOne"
+                          :rules="[
+                 ]">
+              <el-input v-model="inputForm.evaluationPersonOne" placeholder="请填写签字评估师1"     ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="签字评估师2" prop="evaluationPersonTwo"
+                          :rules="[
+                 ]">
+              <el-input v-model="inputForm.evaluationPersonTwo" placeholder="请填写签字评估师2"     ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="项目状态" prop="status"
+                          :rules="[
+                 ]">
+<!--              <el-input v-model="inputForm.status" placeholder="请填写项目状态"     ></el-input>-->
+              <el-select v-model="inputForm.status" placeholder="请选择">
+                <el-option
+                  v-for="item in $dictUtils.getDictList('project_status')"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value">
+                </el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="评估报告日message" prop="assessReportMessage"
+                          :rules="[
+                 ]">
+              <el-input v-model="inputForm.assessReportMessage" placeholder="请填写评估报告日message"     ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="评估基准日message" prop="assessBaseMessage"
+                          :rules="[
+                 ]">
+              <el-input v-model="inputForm.assessBaseMessage" placeholder="请填写评估基准日message"     ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="开票日期message" prop="invoiceMessage"
+                          :rules="[
+                 ]">
+              <el-input v-model="inputForm.invoiceMessage" placeholder="请填写开票日期message"     ></el-input>
+            </el-form-item>
+          </el-col>
+
+        </el-row>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+      <el-button size="small" @click="close()" icon="el-icon-circle-close">关闭</el-button>
+      <el-button size="small" type="primary" v-if="method != 'view'" @click="doSubmit()" icon="el-icon-circle-check" v-noMoreClick>确定</el-button>
+    </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  import ProjectService from '@/api/sys/ProjectService'
+  export default {
+    data () {
+      return {
+        title: '',
+        method: '',
+        visible: false,
+        loading: false,
+        inputForm: {
+          customerName: '',
+          projectName: '',
+          evaluationObjective: '',
+          projectType: '',
+          evaluationBaseDate: '',
+          evaluationBaseDateUi: '',
+          evaluationReportDate: '',
+          evaluationReportDateUi: '',
+          protocolNum: '',
+          documentNum: '',
+          projectHead: '',
+          waystEvaluation: '',
+          fixedAssetsEvaluation: '',
+          netAssetsEvaluation: '',
+          rentEvaluation: '',
+          forensics: '',
+          reportCharges: '',
+          currentDisposePerson: '',
+          isInvoice: '',
+          invoiceDate: '',
+          invoiceDateUi: '',
+          actualCharges: '',
+          isContractArchive: '',
+          isPapersIntact: '',
+          isPapersArchive: '',
+          opsAmount: '',
+          isOpsReimbursement: '',
+          reimbursementAmount: '',
+          unreimbursedAmount: '',
+          reimbursementNum: '',
+          reimbursementDate: '',
+          reimbursementDateUi: '',
+          evaluationPersonOne: '',
+          evaluationPersonTwo: '',
+          status: '',
+          assessReportMessage: '',
+          assessBaseMessage: '',
+          invoiceMessage: '',
+          isCommissionReimbursement: '',
+          itemType: ''
+        }
+      }
+    },
+    projectService: null,
+    created () {
+      this.projectService = new ProjectService()
+    },
+    methods: {
+      init (method, id) {
+        this.method = method
+        this.inputForm = {
+          customerName: '',
+          projectName: '',
+          evaluationObjective: '',
+          projectType: '',
+          evaluationBaseDate: '',
+          evaluationBaseDateUi: '',
+          evaluationReportDate: '',
+          evaluationReportDateUi: '',
+          protocolNum: '',
+          documentNum: '',
+          projectHead: '',
+          waystEvaluation: '',
+          fixedAssetsEvaluation: '',
+          netAssetsEvaluation: '',
+          rentEvaluation: '',
+          forensics: '',
+          reportCharges: '',
+          currentDisposePerson: '',
+          isInvoice: '',
+          invoiceDate: '',
+          invoiceDateUi: '',
+          actualCharges: '',
+          isContractArchive: '',
+          isPapersIntact: '',
+          isPapersArchive: '',
+          opsAmount: '',
+          isOpsReimbursement: '',
+          reimbursementAmount: '',
+          unreimbursedAmount: '',
+          reimbursementNum: '',
+          reimbursementDate: '',
+          reimbursementDateUi: '',
+          evaluationPersonOne: '',
+          evaluationPersonTwo: '',
+          status: '',
+          assessReportMessage: '',
+          assessBaseMessage: '',
+          invoiceMessage: '',
+          isCommissionReimbursement: '',
+          itemType: ''
+        }
+        this.inputForm.id = id
+        if (method === 'add') {
+          this.title = `新建项目`
+        } else if (method === 'edit') {
+          this.title = '修改项目信息'
+        } else if (method === 'view') {
+          this.title = '查看项目详情'
+        }
+        this.visible = true
+        this.loading = false
+        this.$nextTick(() => {
+          this.$refs.inputForm.resetFields()
+          if (method === 'edit' || method === 'view') { // 修改或者查看
+            this.loading = true
+            this.projectService.queryById(this.inputForm.id).then(({data}) => {
+              this.inputForm = this.recover(this.inputForm, data)
+              this.inputForm.evaluationBaseDateUi = data.evaluationBaseDate
+              this.inputForm.evaluationReportDateUi = data.evaluationReportDate
+              this.inputForm.invoiceDateUi = data.invoiceDate
+              this.inputForm.reimbursementDateUi = data.reimbursementDate
+              this.inputForm = JSON.parse(JSON.stringify(this.inputForm))
+              this.loading = false
+            })
+          }
+        })
+      },
+      // 表单提交
+      doSubmit () {
+        this.$refs['inputForm'].validate((valid) => {
+          if (valid) {
+            this.loading = true
+            this.inputForm.itemType = '2'
+            this.projectService.save(this.inputForm).then(({data}) => {
+              this.close()
+              this.$message.success(data)
+              this.$emit('refreshDataList')
+              this.loading = false
+            }).catch(() => {
+              this.loading = false
+            })
+          }
+        })
+      },
+      close () {
+        this.$refs.inputForm.resetFields()
+        this.visible = false
+      }
+    }
+  }
+</script>

+ 250 - 0
src/views/modules/sys/project/ConsultationList.vue

@@ -0,0 +1,250 @@
+<template>
+  <div class="page">
+      <el-form size="small" :inline="true" class="query-form" ref="searchForm" :model="searchForm" @keyup.enter.native="refreshList()" @submit.native.prevent>
+            <!-- 搜索框-->
+         <el-form-item prop="customerName">
+                <el-input size="small" v-model="searchForm.customerName" placeholder="客户名称" clearable></el-input>
+         </el-form-item>
+         <el-form-item prop="projectName">
+                <el-input size="small" v-model="searchForm.projectName" placeholder="项目名称" clearable></el-input>
+         </el-form-item>
+          <el-form-item>
+            <el-button type="primary" @click="refreshList()" size="small" icon="el-icon-search">查询</el-button>
+            <el-button @click="resetSearch()" size="small" icon="el-icon-refresh-right">重置</el-button>
+          </el-form-item>
+      </el-form>
+     <div class="bg-white top">
+        <vxe-toolbar :refresh="{query: refreshList}" import export print custom>
+          <template #buttons>
+            <el-button v-if="hasPermission('sys:project:add')" type="primary" size="small" icon="el-icon-plus" @click="add()">新建</el-button>
+<!--            <el-button v-if="hasPermission('sys:post:edit')" type="warning" size="small" icon="el-icon-edit-outline" @click="edit()" :disabled="$refs.projectTable && $refs.projectTable.getCheckboxRecords().length !== 1" plain>修改</el-button>-->
+            <el-button v-if="hasPermission('sys:project:del')" type="danger"   size="small" icon="el-icon-delete" @click="del()" :disabled="$refs.projectTable && $refs.projectTable.getCheckboxRecords().length === 0" plain>删除</el-button>
+            <el-button v-if="hasPermission('sys:project:import')"  type="default" @click="downloadTpl()" size="small">下载模板</el-button>
+
+          </template>
+        </vxe-toolbar>
+        <div style="height: calc(100% - 80px);">
+            <vxe-table
+                border="inner"
+                auto-resize
+                resizable
+                height="auto"
+                :loading="loading"
+                size="small"
+                ref="projectTable"
+                show-header-overflow
+                show-overflow
+                highlight-hover-row
+                :menu-config="{}"
+                :print-config="{}"
+                :export-config="{}"
+                @sort-change="sortChangeHandle"
+                :sort-config="{remote:true}"
+                :data="dataList"
+                :import-config="{
+                    importMethod: importMethod,
+                    types: ['xls', 'xlsx'],
+                    remote: true}"
+                :checkbox-config="{}">
+                <vxe-column type="seq" width="40"></vxe-column>
+                <vxe-column type="checkbox"  width="40px"></vxe-column>
+                <vxe-column width="130px"  title="项目名称" field="projectName" sortable>
+                    <template slot-scope="scope">
+                        <el-link  type="primary" :underline="false" v-if="hasPermission('sys:project:edit')" @click="edit(scope.row.id)">{{scope.row.projectName}}</el-link>
+                        <el-link  type="primary" :underline="false" v-else-if="hasPermission('sys:project:view')"  @click="view(scope.row.id)">{{scope.row.projectName}}</el-link>
+                        <span v-else>{{scope.row.projectName}}</span>
+                    </template>
+                </vxe-column>
+                <vxe-column width="130px"  title="文号" field="documentNum" sortable> </vxe-column>
+                <vxe-column width="130px"  title="协议号" field="protocolNum" sortable> </vxe-column>
+                <vxe-column width="130px"  title="客户名称" field="customerName" sortable> </vxe-column>
+                <vxe-column width="130px"  title="报告收费" field="reportCharges" sortable> </vxe-column>
+                <vxe-column width="130px" title="合同是否存档" field="isContractArchive" sortable>
+                  <template slot-scope="scope">
+                    {{ $dictUtils.getDictLabel("yes_no", scope.row.isContractArchive, '-') }}
+                  </template>
+                </vxe-column>
+                <vxe-column width="130px" title="底稿是否完好" field="isPapersIntact" sortable>
+                  <template slot-scope="scope">
+                    {{ $dictUtils.getDictLabel("yes_no", scope.row.isPapersIntact, '-') }}
+                  </template>
+                </vxe-column>
+                <vxe-column width="130px"  title="是否已经报销提成" field="isCommissionReimbursement" sortable>
+                  <template slot-scope="scope">
+                    {{ $dictUtils.getDictLabel("yes_no", scope.row.isCommissionReimbursement, '-') }}
+                  </template>
+                </vxe-column>
+                <vxe-column width="130px"  title="项目负责人" field="projectHead" sortable> </vxe-column>
+                <vxe-column width="130px"  title="评估报告日" field="evaluationReportDate" sortable> </vxe-column>
+                <vxe-column width="130px"  title="开票日期" field="invoiceDate" sortable> </vxe-column>
+                <vxe-column width="130px"   title="状态" field="status" sortable>
+                  <template slot-scope="scope">
+                    {{ $dictUtils.getDictLabel("project_status", scope.row.status, '-') }}
+                  </template>
+                </vxe-column>
+
+
+
+                <!--<vxe-column  title="是否可用" field="status" sortable>
+                  <template slot-scope="scope">
+                    <el-tag v-if="scope.row.status==='1'" type="primary">
+                      {{ $dictUtils.getDictLabel("yes_no", scope.row.status, '-') }}
+                    </el-tag>
+                    <el-tag v-else type="danger">
+                      {{ $dictUtils.getDictLabel("yes_no", scope.row.status, '-') }}
+                    </el-tag>
+                  </template>
+                </vxe-column>-->
+                <vxe-column title="操作" width="200px" fixed="right" align="center">
+                    <template  slot-scope="scope">
+                      <el-button v-if="hasPermission('sys:project:view')" type="text" icon="el-icon-view" size="small" @click="view(scope.row.id)">查看</el-button>
+                      <el-button v-if="hasPermission('sys:project:edit')" type="text" icon="el-icon-edit" size="small" @click="edit(scope.row.id)">修改</el-button>
+                      <el-button v-if="hasPermission('sys:project:del')" type="text"  icon="el-icon-delete" size="small" @click="del(scope.row.id)">删除</el-button>
+                    </template>
+                </vxe-column>
+            </vxe-table>
+            <vxe-pager
+              background
+              size="small"
+              :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>
+     </div>
+        <!-- 弹窗, 新增 / 修改 -->
+    <ConsultationForm  ref="consultationForm" @refreshDataList="refreshList"></ConsultationForm>
+  </div>
+</template>
+
+<script>
+  import ConsultationForm from './ConsultationForm'
+  import ProjectService from '@/api/sys/ProjectService'
+  export default {
+    data () {
+      return {
+        searchForm: {
+          customerName: '',
+          projectName: ''
+        },
+        dataList: [],
+        tablePage: {
+          total: 0,
+          currentPage: 1,
+          pageSize: 10,
+          orders: []
+        },
+        loading: false
+      }
+    },
+    projectService: null,
+    created () {
+      this.projectService = new ProjectService()
+    },
+    components: {
+      ConsultationForm
+    },
+    activated () {
+      this.refreshList()
+    },
+
+    methods: {
+      // 获取数据列表
+      refreshList () {
+        this.loading = true
+        this.projectService.list({
+          'current': this.tablePage.currentPage,
+          'size': this.tablePage.pageSize,
+          'orders': this.tablePage.orders,
+          'itemType': '2',
+          ...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.refreshList()
+      },
+      // 排序
+      sortChangeHandle (column) {
+        this.tablePage.orders = []
+        if (column.order != null) {
+          this.tablePage.orders.push({column: this.$utils.toLine(column.property), asc: column.order === 'asc'})
+        }
+        this.refreshList()
+      },
+      // 新增
+      add () {
+        this.$refs.consultationForm.init('add', '')
+      },
+      // 修改
+      edit (id) {
+        id = id || this.$refs.projectTable.getCheckboxRecords().map(item => {
+          return item.id
+        })[0]
+        this.$refs.consultationForm.init('edit', id)
+      },
+      // 查看
+      view (id) {
+        this.$refs.consultationForm.init('view', id)
+      },
+      // 删除
+      del (id) {
+        let ids = id || this.$refs.projectTable.getCheckboxRecords().map(item => {
+          return item.id
+        }).join(',')
+        this.$confirm(`确定删除所选项吗?`, '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        }).then(() => {
+          this.loading = true
+          this.projectService.delete(ids).then(({data}) => {
+            this.$message.success(data)
+            this.refreshList()
+            this.loading = false
+          })
+        })
+      },
+      importMethod ({ file }) {
+        // 处理表单
+        const formBody = new FormData()
+        formBody.append('file', file)
+        this.loading = true
+        this.projectService.importExcel(formBody).then(result => {
+          this.$message.success(result.data)
+          this.loading = false
+        }).catch(() => {
+          this.loading = false
+        })
+      },
+      resetSearch () {
+        this.$refs.searchForm.resetFields()
+        this.refreshList()
+      },
+      // 下载模板
+      downloadTpl () {
+        // this.$utils.downloadExcel('/sys/project/import/template')
+        this.loading = true
+        this.projectService.exportTemplate().then((res) => {
+          // 将二进制流文件写入excel表,以下为重要步骤
+          this.$utils.downloadExcel(res.data, '项目导入模板')
+          this.loading = false
+        }).catch(function (err) {
+          this.loading = false
+          if (err.response) {
+            console.log(err.response)
+          }
+        })
+      }
+    }
+  }
+</script>