Kaynağa Gözat

大中型现场查勘节点上传现场照片&&分配人员接件数

wucl 1 ay önce
ebeveyn
işleme
83a868ccd2
3 değiştirilmiş dosya ile 2505 ekleme ve 2853 silme
  1. 12 0
      src/api/modules/majorAppraiserUnit.js
  2. 2141 2748
      src/views/major/detail.vue
  3. 352 105
      src/views/major/todoDetail.vue

+ 12 - 0
src/api/modules/majorAppraiserUnit.js

@@ -0,0 +1,12 @@
+import request from '@/utils/request'
+/*
+* 项目
+*/
+export default {
+   save(params) {
+      return request.post(`majorAppraiserUnit`, params)
+   },
+   query(params){
+    return request.get(`majorAppraiserUnit/${params}`)
+   }
+}

Dosya farkı çok büyük olduğundan ihmal edildi
+ 2141 - 2748
src/views/major/detail.vue


+ 352 - 105
src/views/major/todoDetail.vue

@@ -468,7 +468,6 @@
                   <el-button type="success" :disabled="!takeNumberItems.length > 0" round
                     @click="takeStatementNoOrLettertNo('STATEMENT')">取价值意见书号</el-button>
                 </el-tooltip>
-                <!-- <el-button v-if="ifCreatePorduction" type="danger"  round @click="createProduction(reportNo)">创建产品</el-button> -->
               </el-col>
               <el-col :span="2" v-if="currentNode.nodeCode === 'WRITE_REPORT'">
                 <el-tooltip v-if="ifTakeNumber" class="item" effect="dark" content="全选取主号,多次取号(主号-子号)" placement="right">
@@ -484,6 +483,15 @@
                 </el-tooltip>
                 <!-- <el-button v-if="ifCreatePorduction" type="danger"  round @click="createProduction(reportNo)">创建产品</el-button> -->
               </el-col>
+              <el-col :span="2" v-if="major.evaluateUnit">
+                <div>
+                  <el-statistic group-separator="," :precision="1" :value="major.evaluateUnit" title="点击分配项目计件数" :value-style="{'font-weight':'bold'}">
+                    <template slot="prefix">
+                      <i @click="openAllotUnitDialog()" class="el-icon-edit-outline" style="color:red;font-weight: bold;"></i>
+                    </template>
+                  </el-statistic>
+                </div>
+              </el-col>
             </el-row>
           </div>
           <el-table ref="multipleTable" :data="evaluateLandData" stripe
@@ -593,6 +601,15 @@
                 </el-tooltip>
                 <!-- <el-button v-if="ifCreatePorduction" type="danger"  round @click="createProduction(reportNo)">创建产品</el-button> -->
               </el-col>
+              <el-col :span="2" v-if="major.evaluateUnit">
+                <div>
+                  <el-statistic group-separator="," :precision="1" :value="major.evaluateUnit" title="点击分配项目计件数" :value-style="{'font-weight':'bold'}">
+                    <template slot="prefix">
+                      <i @click="openAllotUnitDialog()" class="el-icon-edit-outline" style="color:red;font-weight: bold;"></i>
+                    </template>
+                  </el-statistic>
+                </div>
+              </el-col>
             </el-row>
           </div>
           <el-table ref="multipleTable" :data="evaluateLandData" stripe
@@ -1271,12 +1288,12 @@
         </el-table>
       </el-tab-pane>
     </el-tabs>
-    <el-dialog :visible.sync="landDialogVisible" custom-class="doWarehouseClass" @closed="closeLandTarget">
+    <el-dialog :visible.sync="landDialogVisible" custom-class="doWarehouseClass" @closed="closeLandTarget" width="80%">
       <div>
-        <el-form ref="landFrom" :model="landTarget" style="margin-top:20px" :rules="rules">
+        <el-form ref="landFrom" :model="landTarget" :rules="rules">
           <el-divider content-position="left">【土地】基本信息</el-divider>
           <el-row>
-            <el-col :xs="24" :sm="12" :lg="12" :span="6">
+            <el-col :xs="24" :sm="8" :lg="8" :span="6">
               <el-form-item label="土地类型:" prop="landType"
                 :rules="{ required: true, message: '土地类型不能为空', trigger: 'blur' }" label-width="140px"
                 class="postInfo-container-item">
@@ -1288,8 +1305,8 @@
                   :disabled="!couldAddTarget">集体</el-radio>
               </el-form-item>
             </el-col>
-            <el-col :xs="24" :sm="12" :lg="12" :span="6">
-              <el-form-item label="使用权面积:" prop="useAcreage" label-width="140px" class="postInfo-container-item">
+            <el-col :xs="24" :sm="8" :lg="8" :span="6">
+              <el-form-item label="使用权面积:" prop="useAcreage" label-width="120px" class="postInfo-container-item">
                 <el-input v-model="landTarget.useAcreage" class="filter-item"
                   :readonly="!couldAddTarget"
                   :disabled="!couldAddTarget">
@@ -1297,9 +1314,7 @@
                 </el-input>
               </el-form-item>
             </el-col>
-          </el-row>
-          <el-row>
-            <el-col :xs="24" :sm="12" :lg="12" :span="6">
+            <el-col :xs="24" :sm="8" :lg="8" :span="6">
               <el-form-item label="使用权类型:" prop="rightType"
                 :rules="{ required: true, message: '使用权类型不能为空', trigger: 'blur' }" label-width="140px"
                 class="postInfo-container-item">
@@ -1311,7 +1326,35 @@
                   :disabled="!couldAddTarget">划拨</el-radio>
               </el-form-item>
             </el-col>
-            <el-col :xs="24" :sm="12" :lg="12" :span="8">
+          </el-row>
+          <el-row>
+            <el-col :xs="24" :sm="8" :lg="8" :span="6">
+                      <el-form-item
+                        label="省市县:"
+                        prop="citys"
+                        label-width="120px"
+                        class="postInfo-container-item"
+                        :rules="{ required: true, message: '省市县不能为空', trigger: 'blur' }"
+                      >
+                        <el-cascader
+                          filterable
+                          v-model="landTarget.citys"
+                          :options="districtsOptions"
+                          :props="{ expandTrigger: 'hover' }"
+                          @change="handleChange"
+                          :disabled="currentNode.nodeCode!='SPOT_RECONNAISSANCE'"
+                          style="width:100%"></el-cascader>
+                      </el-form-item>
+                    </el-col>
+            <el-col :xs="24" :sm="8" :lg="8" :span="6">
+              <el-form-item label="坐落:" prop="located" :rules="{ required: true, message: '坐落不能为空', trigger: 'blur' }"
+                label-width="120px" class="postInfo-container-item">
+                <el-input v-model.trim="landTarget.located" class="filter-item"
+                  :readonly="!couldAddTarget"
+                  :disabled="!couldAddTarget" />
+              </el-form-item>
+            </el-col>
+            <el-col :xs="24" :sm="8" :lg="8" :span="6">
               <el-form-item label="使用权人:" prop="rightToUser"
                 :rules="{ required: true, message: '土地使用权人不能为空', trigger: 'blur' }" label-width="120px"
                 class="postInfo-container-item">
@@ -1322,24 +1365,14 @@
             </el-col>
           </el-row>
           <el-row>
-            <el-col :xs="24" :sm="12" :lg="12" :span="8">
+            <el-col :xs="24" :sm="8" :lg="8" :span="6">
               <el-form-item label="国土证号:" prop="landCertificateNo" label-width="120px" class="postInfo-container-item">
                 <el-input v-model.trim="landTarget.landCertificateNo" class="filter-item"
                   :readonly="!couldAddTarget"
                   :disabled="!couldAddTarget" />
               </el-form-item>
             </el-col>
-            <el-col :xs="24" :sm="12" :lg="12" :span="8">
-              <el-form-item label="坐落:" prop="located" :rules="{ required: true, message: '坐落不能为空', trigger: 'blur' }"
-                label-width="120px" class="postInfo-container-item">
-                <el-input v-model.trim="landTarget.located" class="filter-item"
-                  :readonly="!couldAddTarget"
-                  :disabled="!couldAddTarget" />
-              </el-form-item>
-            </el-col>
-          </el-row>
-          <el-row>
-            <el-col :xs="24" :sm="12" :lg="12" :span="6">
+            <el-col :xs="24" :sm="8" :lg="8" :span="6">
               <el-form-item label="剩余年限:" prop="residueYears" label-width="120px" class="postInfo-container-item">
                 <el-input v-model="landTarget.residueYears" class="filter-item"
                   :readonly="!couldAddTarget || landTarget.rightType === '划拨'"
@@ -1348,7 +1381,7 @@
                 </el-input>
               </el-form-item>
             </el-col>
-            <el-col :xs="24" :sm="12" :lg="12" :span="6">
+            <el-col :xs="24" :sm="8" :lg="8" :span="6">
               <el-form-item label="容积率:" prop="plotRatio" label-width="120px" class="postInfo-container-item">
                 <el-input v-model="landTarget.plotRatio" class="filter-item"
                   :readonly="!couldAddTarget"
@@ -1358,7 +1391,7 @@
             </el-col>
           </el-row>
           <el-row>
-            <el-col :xs="24" :sm="12" :lg="12" :span="6">
+            <el-col :xs="24" :sm="8" :lg="8" :span="6">
               <el-form-item label="用途(地类):" prop="landUse" label-width="120px"
                 :rules="{ required: true, message: '用途(地类)不能为空', trigger: 'blur' }" class="postInfo-container-item">
                 <el-input v-model.trim="landTarget.landUse" class="filter-item"
@@ -1366,7 +1399,7 @@
                   :disabled="!couldAddTarget" />
               </el-form-item>
             </el-col>
-            <el-col :xs="24" :sm="12" :lg="12" :span="8">
+            <el-col :xs="24" :sm="8" :lg="8" :span="8">
               <el-form-item label="估价期日:" prop="evaluateDate"
                 :rules="{ required: true, message: '估价期日不能为空', trigger: 'blur' }" label-width="120px"
                 class="postInfo-container-item">
@@ -1376,9 +1409,7 @@
                 </el-date-picker>
               </el-form-item>
             </el-col>
-          </el-row>
-          <el-row>
-            <el-col :xs="24" :sm="12" :lg="12" :span="8">
+            <el-col :xs="24" :sm="8" :lg="8" :span="8">
               <el-form-item label="负责人:" prop="principalId"
                 :rules="{ required: true, message: '项目负责人不能为空', trigger: 'blur' }" label-width="120px"
                 class="postInfo-container-item">
@@ -1387,7 +1418,9 @@
                 </el-select>
               </el-form-item>
             </el-col>
-            <el-col :xs="24" :sm="12" :lg="12" :span="8">
+          </el-row>
+          <el-row>
+            <el-col :xs="24" :sm="8" :lg="8" :span="8">
               <el-form-item label="实勘人:" prop="sites" :rules="{ required: true, message: '实勘人不能为空', trigger: 'blur' }"
                 label-width="120px" class="postInfo-container-item">
                 <el-select v-model="landTarget.sites" placeholder="请选择" multiple filterable clearable style="width:100%"
@@ -1399,7 +1432,25 @@
             </el-col>
           </el-row>
           <el-row>
-            <el-col :xs="24" :sm="12" :lg="24" :span="12">
+            <el-col :xs="24" :sm="8" :lg="8" :span="6">
+              <el-form-item label="现场照片:" prop="sceneImage" label-width="120px" class="postInfo-container-item" :rules="{ required: true, message: '现场照片不能为空', trigger: 'blur' }">
+                <el-upload
+                  class="upload-demo"
+                  action="/api/upload"
+                  :on-preview="sceneImagePreview"
+                  :on-remove="sceneImageRemove"
+                  :file-list="sceneImages"
+                  :on-exceed="sceneImagesExceed"
+                  :before-remove="sceneImageBeforeRemove"
+                  :on-success="sceneImagesSuccess"
+                  :limit="1"
+                  list-type="picture">
+                  <el-button size="small" type="primary">点击上传</el-button>
+                  <div slot="tip" class="el-upload__tip">请上传真实现场照片,后期将会核对其真实性。</div>
+                </el-upload>
+              </el-form-item>
+            </el-col>
+            <el-col :xs="24" :sm="16" :lg="16" :span="6">
               <el-form-item label="备注:" prop="remark" label-width="120px" class="postInfo-container-item">
                 <el-input v-model.trim="landTarget.remark" class="filter-item" type="textarea" style="width:100%;"
                   :readonly="!couldAddTarget"
@@ -1411,7 +1462,7 @@
             v-if="currentNode.nodeCode === 'INITIAL_PRICE' || currentNode.nodeCode === 'REVIEW_QUOTATION'">
             <el-divider content-position="left">【土地】定价信息</el-divider>
             <el-row>
-              <el-col :xs="24" :sm="12" :lg="24" :span="6">
+              <el-col :xs="24" :sm="8" :lg="8" :span="6">
                 <el-form-item label="评估方法:" prop="eMethods"
                    label-width="160px"
                   :class="['postInfo-container-item', 'task-class']">
@@ -1425,9 +1476,7 @@
                   </el-checkbox-group>
                 </el-form-item>
               </el-col>
-            </el-row>
-            <el-row>
-              <el-col :xs="24" :sm="12" :lg="12" :span="6" v-if="eMethods.includes('其他')">
+              <el-col :xs="24" :sm="8" :lg="8" :span="6" v-if="eMethods.includes('其他')">
                 <el-form-item label="其他评估方法:" label-width="160px" prop="definedEvaluationMethod"
                   :class="['postInfo-container-item', 'task-class']"
                   :rules="{ required: true, message: '其他评估方法不能为空', trigger: 'blur' }">
@@ -1435,10 +1484,8 @@
                   </el-input>
                 </el-form-item>
               </el-col>
-            </el-row>
-            <el-row>
-              <el-col :xs="24" :sm="12" :lg="12" :span="6">
-                <el-form-item label="初步定价:" prop="evaluateValue" label-width="160px"
+              <el-col :xs="24" :sm="8" :lg="8" :span="6">
+                <el-form-item label="初步定价:" prop="evaluateValue" label-width="120px"
                   :class="['postInfo-container-item', 'task-class']">
                   <el-input v-model="landTarget.evaluateValue" 
                    class="filter-item">
@@ -1446,8 +1493,8 @@
                   </el-input>
                 </el-form-item>
               </el-col>
-              <el-col :xs="24" :sm="12" :lg="12" :span="6" v-if="currentNode.nodeCode === 'REVIEW_QUOTATION'">
-                <el-form-item label="审核定价:" prop="checkValue" label-width="160px"
+              <el-col :xs="24" :sm="8" :lg="8" :span="6" v-if="currentNode.nodeCode === 'REVIEW_QUOTATION'">
+                <el-form-item label="审核定价:" prop="checkValue" label-width="120px"
                   :class="['postInfo-container-item', 'task-class']">
                   <span slot="label">审核定价
                     <el-tooltip class="item" effect="dark" content="默认为‘初步定价’可修改。" placement="top-start">
@@ -1469,12 +1516,12 @@
         </el-form>
       </div>
     </el-dialog>
-    <el-dialog :visible.sync="houseDialogVisible" custom-class="doWarehouseClass" @closed="closeLandTarget">
+    <el-dialog :visible.sync="houseDialogVisible" custom-class="doWarehouseClass" @closed="closeLandTarget" width="80%">
       <div>
-        <el-form ref="houseFrom" :model="landTarget" style="margin-top:20px" :rules="rules">
+        <el-form ref="houseFrom" :model="landTarget" :rules="rules">
           <el-divider content-position="left">【房地产】基本信息</el-divider>
           <el-row>
-            <el-col :xs="24" :sm="12" :lg="12" :span="6">
+            <el-col :xs="24" :sm="8" :lg="8" :span="6">
               <el-form-item label="房屋用途:" prop="houseToUse" label-width="120px" :class="['postInfo-container-item']">
                 <el-checkbox-group v-model="houseToUse">
                   <el-checkbox-button label="住宅" key="住宅">住宅</el-checkbox-button>
@@ -1485,52 +1532,67 @@
                 </el-checkbox-group>
               </el-form-item>
             </el-col>
-            <el-col :xs="24" :sm="12" :lg="12" :span="6">
+            <el-col :xs="24" :sm="8" :lg="8" :span="6">
               <el-form-item label="土地使用权人:" prop="rightToUser" label-width="140px" class="postInfo-container-item">
                 <el-input v-model.trim="landTarget.rightToUser" :readonly="!couldAddTarget"
                 :disabled="!couldAddTarget" class="filter-item" />
               </el-form-item>
             </el-col>
-          </el-row>
-          <el-row>
-            <el-col :xs="24" :sm="12" :lg="12" :span="6">
+            <el-col :xs="24" :sm="8" :lg="8" :span="6">
               <el-form-item label="权利人:" prop="owner" :rules="{ required: true, message: '权利人不能为空', trigger: 'blur' }"
                 label-width="120px" class="postInfo-container-item">
                 <el-input v-model.trim="landTarget.owner" class="filter-item" :readonly="!couldAddTarget"
                 :disabled="!couldAddTarget"/>
               </el-form-item>
             </el-col>
-            <el-col :xs="24" :sm="12" :lg="12" :span="6">
+          </el-row>
+          <el-row>
+            <el-col :xs="24" :sm="8" :lg="8" :span="6">
               <el-form-item label="权证号:" prop="ownerNo" label-width="120px" class="postInfo-container-item">
                 <el-input v-model.trim="landTarget.ownerNo" class="filter-item" :readonly="!couldAddTarget"
                 :disabled="!couldAddTarget"/>
               </el-form-item>
             </el-col>
-          </el-row>
-          <el-row>
-            <el-col :xs="24" :sm="12" :lg="12" :span="6">
+            <el-col :xs="24" :sm="8" :lg="8" :span="6">
               <el-form-item label="土地证号:" prop="landCertificateNo" label-width="120px" class="postInfo-container-item">
                 <el-input v-model.trim="landTarget.landCertificateNo" class="filter-item" :readonly="!couldAddTarget"
                 :disabled="!couldAddTarget"/>
               </el-form-item>
             </el-col>
-            <el-col :xs="24" :sm="12" :lg="12" :span="6">
-              <el-form-item label="坐落:" prop="located" label-width="120px"
-                :rules="{ required: true, message: '坐落不能为空', trigger: 'blur' }" class="postInfo-container-item">
-                <el-input v-model.trim="landTarget.located" class="filter-item" :readonly="!couldAddTarget"
+            <el-col :xs="24" :sm="8" :lg="8" :span="8">
+              <el-form-item label="竣工年代:" prop="buildDoneYear" label-width="120px" class="postInfo-container-item">
+                <el-input v-model.trim="landTarget.buildDoneYear" class="filter-item" :readonly="!couldAddTarget"
                 :disabled="!couldAddTarget"/>
               </el-form-item>
             </el-col>
           </el-row>
           <el-row>
-            <el-col :xs="24" :sm="12" :lg="12" :span="6">
-              <el-form-item label="使用权类型:" :rules="{ required: true, message: '使用权类型不能为空', trigger: 'blur' }"
-                prop="useRightType" label-width="140px" class="postInfo-container-item">
-                <el-input v-model.trim="landTarget.useRightType" class="filter-item" :readonly="!couldAddTarget"
+            <el-col :xs="24" :sm="8" :lg="8" :span="6">
+                      <el-form-item
+                        label="省市县:"
+                        prop="citys"
+                        label-width="120px"
+                        class="postInfo-container-item"
+                        :rules="{ required: true, message: '省市县不能为空', trigger: 'blur' }"
+                      >
+                        <el-cascader
+                          filterable
+                          v-model="landTarget.citys"
+                          :options="districtsOptions"
+                          :props="{ expandTrigger: 'hover' }"
+                          :disabled="currentNode.nodeCode!='SPOT_RECONNAISSANCE'"
+                          @change="handleChange"
+                          style="width:100%"></el-cascader>
+                      </el-form-item>
+                    </el-col>
+            <el-col :xs="24" :sm="8" :lg="8" :span="6">
+              <el-form-item label="坐落:" prop="located" label-width="120px"
+                :rules="{ required: true, message: '坐落不能为空', trigger: 'blur' }" class="postInfo-container-item">
+                <el-input v-model.trim="landTarget.located" class="filter-item" :readonly="!couldAddTarget"
                 :disabled="!couldAddTarget"/>
               </el-form-item>
             </el-col>
-            <el-col :xs="24" :sm="12" :lg="12" :span="8">
+            <el-col :xs="24" :sm="8" :lg="8" :span="8">
               <el-form-item label="项目名称:" prop="targetName" label-width="120px" class="postInfo-container-item">
                 <el-input v-model.trim="landTarget.targetName" :readonly="!couldAddTarget"
                 :disabled="!couldAddTarget"/>
@@ -1538,13 +1600,7 @@
             </el-col>
           </el-row>
           <el-row>
-            <el-col :xs="24" :sm="12" :lg="12" :span="8">
-              <el-form-item label="竣工年代:" prop="buildDoneYear" label-width="120px" class="postInfo-container-item">
-                <el-input v-model.trim="landTarget.buildDoneYear" class="filter-item" :readonly="!couldAddTarget"
-                :disabled="!couldAddTarget"/>
-              </el-form-item>
-            </el-col>
-            <el-col :xs="24" :sm="12" :lg="12" :span="8">
+            <el-col :xs="24" :sm="8" :lg="8" :span="8">
               <el-form-item label="建筑面积:" prop="buildAcreage" label-width="120px" class="postInfo-container-item">
                 <el-input v-model="landTarget.buildAcreage" style="width:100%" class="filter-item" :readonly="!couldAddTarget"
                 :disabled="!couldAddTarget">
@@ -1552,9 +1608,7 @@
                 </el-input>
               </el-form-item>
             </el-col>
-          </el-row>
-          <el-row>
-            <el-col :xs="24" :sm="12" :lg="12" :span="8">
+            <el-col :xs="24" :sm="8" :lg="8" :span="8">
               <el-form-item label="土地面积:" prop="landAcreage" label-width="120px" class="postInfo-container-item">
                 <el-input v-model="landTarget.landAcreage" style="width:100%" class="filter-item" :readonly="!couldAddTarget"
                 :disabled="!couldAddTarget">
@@ -1562,7 +1616,7 @@
                 </el-input>
               </el-form-item>
             </el-col>
-            <el-col :xs="24" :sm="12" :lg="12" :span="6">
+            <el-col :xs="24" :sm="8" :lg="8" :span="6">
               <el-form-item label="规划用途:" :rules="{ required: true, message: '规划用途不能为空', trigger: 'blur' }"
                 prop="planPurpose" label-width="120px" class="postInfo-container-item">
                 <el-input v-model.trim="landTarget.planPurpose" class="filter-item" :readonly="!couldAddTarget"
@@ -1571,32 +1625,32 @@
             </el-col>
           </el-row>
           <el-row>
-            <el-col :xs="24" :sm="12" :lg="12" :span="6">
+            <el-col :xs="24" :sm="8" :lg="8" :span="6">
               <el-form-item label="实勘地址:" :rules="{ required: true, message: '实勘地址不能为空', trigger: 'blur' }"
                 prop="siteLocated" label-width="120px" class="postInfo-container-item">
                 <el-input v-model.trim="landTarget.siteLocated" class="filter-item" :readonly="!couldAddTarget"
                 :disabled="!couldAddTarget"/>
               </el-form-item>
             </el-col>
-            <el-col :xs="24" :sm="12" :lg="12" :span="6">
+            <el-col :xs="24" :sm="8" :lg="8" :span="6">
               <el-form-item label="实际用途:" :rules="{ required: true, message: '实际用途不能为空', trigger: 'blur' }"
                 prop="realPurpose" label-width="120px" class="postInfo-container-item">
                 <el-input v-model.trim="landTarget.realPurpose" class="filter-item" :readonly="!couldAddTarget"
                 :disabled="!couldAddTarget"/>
               </el-form-item>
             </el-col>
-          </el-row>
-          <el-row>
-            <el-col :xs="24" :sm="12" :lg="8" :span="8">
+            <el-col :xs="24" :sm="8" :lg="8" :span="8">
               <el-form-item label="负责人:" prop="principalId"
                 :rules="{ required: true, message: '项目负责人不能为空', trigger: 'blur' }" label-width="120px"
                 class="postInfo-container-item">
-                <el-select :value="landTarget.principalId" readonly disabled>
+                <el-select :value="landTarget.principalId" readonly disabled style="width:100%">
                   <el-option v-for="(p, id) in principals" :label="p.name" :value="p.id"></el-option>
                 </el-select>
               </el-form-item>
             </el-col>
-            <el-col :xs="24" :sm="12" :lg="16" :span="8">
+          </el-row>
+          <el-row>
+            <el-col :xs="24" :sm="8" :lg="8" :span="8">
               <el-form-item label="实勘人:" prop="sites" :rules="{ required: true, message: '实勘人不能为空', trigger: 'blur' }"
                 label-width="120px" class="postInfo-container-item">
                 <el-select v-model="landTarget.sites" placeholder="请选择" multiple filterable clearable style="width:100%"
@@ -1606,9 +1660,34 @@
                 </el-select>
               </el-form-item>
             </el-col>
+            <el-col :xs="24" :sm="8" :lg="8" :span="6">
+              <el-form-item label="使用权类型:" :rules="{ required: true, message: '使用权类型不能为空', trigger: 'blur' }"
+                prop="useRightType" label-width="120px" class="postInfo-container-item">
+                <el-input v-model.trim="landTarget.useRightType" class="filter-item" :readonly="!couldAddTarget"
+                :disabled="!couldAddTarget"/>
+              </el-form-item>
+            </el-col>
           </el-row>
           <el-row>
-            <el-col :xs="24" :sm="12" :lg="24" :span="12">
+            <el-col :xs="24" :sm="8" :lg="8" :span="12">
+              <el-form-item label="现场照片:" prop="sceneImage" label-width="120px" class="postInfo-container-item" :rules="{ required: true, message: '现场照片不能为空', trigger: 'blur' }">
+                <el-upload
+                  class="upload-demo"
+                  action="/api/upload"
+                  :on-preview="sceneImagePreview"
+                  :on-remove="sceneImageRemove"
+                  :file-list="sceneImages"
+                  :on-exceed="sceneImagesExceed"
+                  :before-remove="sceneImageBeforeRemove"
+                  :on-success="sceneImagesSuccess"
+                  :limit="1"
+                  list-type="picture">
+                  <el-button size="small" type="primary">点击上传</el-button>
+                  <div slot="tip" class="el-upload__tip">请上传真实现场照片,后期将会核对其真实性。</div>
+                </el-upload>
+              </el-form-item>
+            </el-col>
+            <el-col :xs="24" :sm="12" :lg="16" :span="12">
               <el-form-item label="备注:" prop="remark" label-width="120px" class="postInfo-container-item">
                 <el-input v-model.trim="landTarget.remark" class="filter-item" type="textarea" :readonly="!couldAddTarget"
                 :disabled="!couldAddTarget"/>
@@ -1619,7 +1698,7 @@
             v-if="currentNode.nodeCode === 'INITIAL_PRICE' || currentNode.nodeCode === 'REVIEW_QUOTATION'">
             <el-divider content-position="left">【房地产】定价信息</el-divider>
             <el-row>
-              <el-col :xs="24" :sm="12" :lg="24" :span="6">
+              <el-col :xs="24" :sm="8" :lg="8" :span="6">
                 <el-form-item label="评估方法:" prop="eMethods"
                    label-width="160px"
                   :class="['postInfo-container-item', 'task-class']">
@@ -1632,18 +1711,16 @@
                   </el-checkbox-group>
                 </el-form-item>
               </el-col>
-            </el-row>
-            <el-row>
-              <el-col :xs="24" :sm="12" :lg="12" :span="6">
-                <el-form-item label="初步定价:" prop="evaluateValue" label-width="160px"
+              <el-col :xs="24" :sm="8" :lg="8" :span="6">
+                <el-form-item label="初步定价:" prop="evaluateValue" label-width="140px"
                   :class="['postInfo-container-item', 'task-class']">
-                  <el-input v-model="landTarget.evaluateValue" style="width:100%"
+                  <el-input v-model="landTarget.evaluateValue"
                      class="filter-item">
                     <template slot="append">万</template>
                   </el-input>
                 </el-form-item>
               </el-col>
-              <el-col :xs="24" :sm="12" :lg="12" :span="6" v-if="currentNode.nodeCode === 'REVIEW_QUOTATION'">
+              <el-col :xs="24" :sm="8" :lg="8" :span="6" v-if="currentNode.nodeCode === 'REVIEW_QUOTATION'">
                 <el-form-item label="审核定价:" prop="checkValue" label-width="180px"
                   :class="['postInfo-container-item', 'task-class']">
                   <span slot="label">审核定价
@@ -1819,7 +1896,39 @@
     <el-button type="primary" @click="saveRefuseReason()">确 定</el-button>
   </div>
   </el-dialog>
-    
+  <el-dialog :visible.sync="allotUnitDialog" width="30%" center custom-class="doWarehouseClass">
+      <el-form ref="allotUnitForm" :model="allotUnit" class="form-container">
+        <div class="createMajor-main-container">
+          <div class="postInfo-container">
+            <el-row>
+              <el-col :xs="24" :sm="12" :lg="24" :span="6" v-if="currentNode.nodeCode =='SPOT_RECONNAISSANCE'">
+                <el-button style="float:right" type="success" @click="saveAllotUnit()">确认分配</el-button>
+              </el-col>
+            </el-row>
+            <div>
+              <el-divider content-position="left">
+                <h3 class="title">总接计数值:{{ major.evaluateUnit }}</h3>
+              </el-divider>
+            </div>
+            <div v-if="allotUnit.userUnit.length > 0">
+              <el-row style="margin-bottom: 10px; margin-left: 40px;" v-for="(u, index) in allotUnit.userUnit" >
+              <el-col :xs="24" :sm="24" :lg="24" :span="6" >
+                <div style="display: flex;">
+                  <el-select :value="u.userId" disabled style="width: 55%;">
+                  <el-option v-for="(u, id) in allUsers" :label="u.name" :value="u.id"></el-option>
+                </el-select>
+                <el-input  type="number"
+                     class="filter-item" v-model.number="u.unitRate">
+                    <template slot="append">件</template>
+                  </el-input>
+                </div>
+              </el-col>
+            </el-row>
+            </div>
+          </div>
+        </div>
+      </el-form>
+    </el-dialog>
   </div>
 </template>
 <script>
@@ -2080,7 +2189,9 @@ export default {
         cclienteleContactName: null,
         tmobile: null,
         tterminalClienteleContactName: null,
-        tterminalClienteleName: null
+        tterminalClienteleName: null,
+        evaluateUnit:null,
+        membersId:[]
       },
       currentNode: {
         flowId: null,
@@ -2140,7 +2251,9 @@ export default {
         realPurpose: null,
         siteLocated: null,
         useRightType: null,
-        definedEvaluationMethod: null
+        definedEvaluationMethod: null,
+        sceneImage:null,
+        citys:[]
       },
       houseToUse: [],
       eMethods: [],
@@ -2224,7 +2337,14 @@ export default {
         performanceList: [],
         majorProductionId: null
       },
-      needAddToPerformanceUsers: []
+      needAddToPerformanceUsers: [],
+      sceneImages: [],
+      districtsOptions:[],
+      allotUnit:{
+        userUnit:[],
+        majorId:null
+      },
+      allotUnitDialog:false,
     }
   },
   created() {
@@ -2465,6 +2585,7 @@ export default {
       }
     },
     openLandDialog(targetType) {
+      this.getDistrictsOptions();
       if (targetType === '土地') {
         this.landDialogVisible = true;
       } else {
@@ -2479,7 +2600,7 @@ export default {
     saveLandTarget(targetType) {
       let isOk = true;
       this.landTarget.eMethods = this.eMethods;
-    
+      
       if (targetType === '土地') {
         this.$refs.landFrom.validate(valid => {
           if (!valid) {
@@ -2496,11 +2617,22 @@ export default {
           this.landTarget.targetType = '房地产';
         })
       }
+      if (this.landTarget.sceneImage==null || JSON.parse(this.landTarget.sceneImage).length==0){
+        this.$notify({
+            title: '提示',
+            message: '现场照片必传!',
+            type: 'error',
+            duration: 1000,
+            offset: 100
+          });
+          return;
+      }
       if (isOk) {
         if (this.landTarget.majorId) {
           if (!this.landTarget.id) {
             this.landTarget.housePurpose = JSON.stringify(this.houseToUse);
             this.landTarget.evaluateMethods = JSON.stringify(this.eMethods);
+            this.landTarget.sceneImage = JSON.stringify(this.sceneImages);
             this.taskRecordDTO.recordId = this.currentNode.tasks[0].recordId;
             this.taskRecordDTO.taskData = this.landTarget;
             this.$api.majorTarget.add(this.taskRecordDTO).then(res => {
@@ -2513,6 +2645,8 @@ export default {
                   offset: 100
                 });
                 this.getLandTargetList();
+                this.getMajorDetail();
+                this.allotUnit.userUnit = [];
                 this.landDialogVisible = false;
                 this.houseDialogVisible = false;
                 this.taskRecordDTO = {};
@@ -2543,6 +2677,7 @@ export default {
       }
     },
     landTargetEdit(row) {
+      this.getDistrictsOptions();
       if (row.targetType === '土地') {
         this.landDialogVisible = true;
       } else {
@@ -2550,6 +2685,8 @@ export default {
       }
       this.landTarget = Object.assign({}, row);
       this.landTarget.sites = JSON.parse(this.landTarget.siteIds);
+      this.landTarget.citys = JSON.parse(this.landTarget.cityArray);
+      this.sceneImages = JSON.parse(this.landTarget.sceneImage);
       this.eMethods = [];
       if (JSON.parse(this.landTarget.evaluateMethods)) {
         this.eMethods = JSON.parse(this.landTarget.evaluateMethods);
@@ -2577,7 +2714,9 @@ export default {
                   duration: 1000,
                   offset: 100
                 });
+                this.allotUnit.userUnit = [];
                 this.getLandTargetList();
+                this.getMajorDetail();
               } else {
                 this.$notify({
                   title: '失败',
@@ -2592,6 +2731,16 @@ export default {
       }
     },
     doTask(currentNodeCode) {
+      if (JSON.parse(this.landTarget.sceneImage).length==0){
+        this.$notify({
+            title: '提示',
+            message: '现场照片必传!',
+            type: 'error',
+            duration: 1000,
+            offset: 100
+          });
+          return;
+      }
       if (currentNodeCode === 'INITIAL_PRICE') {
         let values = this.evaluateLandData.map(item => item.evaluateValue)
         if (this.eMethods.length == 0) {
@@ -2605,7 +2754,7 @@ export default {
           return;
         }
         if (!this.landTarget.definedEvaluationMethod && this.eMethods.includes('其他')) {
-          console.log(this.landTarget.definedEvaluationMethod);
+          
           this.$notify({
             title: '失败',
             message: '请填写其他评估方法',
@@ -2674,6 +2823,7 @@ export default {
       }
       this.landTarget.housePurpose = JSON.stringify(this.houseToUse);
       this.landTarget.evaluateMethods = JSON.stringify(this.eMethods);
+      this.landTarget.sceneImage = JSON.stringify(this.sceneImages);
       this.taskRecordDTO.recordId = this.currentNode.tasks[0].recordId;
       this.taskRecordDTO.taskData = this.landTarget;
       this.$api.majorTarget.edit(this.taskRecordDTO).then(res => {
@@ -2686,6 +2836,8 @@ export default {
             offset: 100
           });
           this.getLandTargetList();
+          this.getMajorDetail();
+          this.allotUnit.userUnit = [];
           this.landDialogVisible = false;
           this.houseDialogVisible = false;
           this.taskRecordDTO = {};
@@ -3507,13 +3659,7 @@ export default {
               this.notRecordDialog = true;
               return;
             }
-            // if (this.productions[0].isSubmit && !verify.passNotSubmit && this.major.businessObjectType==='房地产'){
-            //   verify.state = false;
-            //   callback(verify);
-            //   this.notSubmitRemind = this.productions[0];
-            //   this.notSubmitDialog = true;
-            //   return;
-            // }
+            
             break;
           case "INITIAL_PRICE":
             let notEvaluateValueTargets = this.evaluateLandData.filter(function (e) {
@@ -3549,7 +3695,20 @@ export default {
               return;
             }
             break;
-        }
+          case "SPOT_RECONNAISSANCE":
+             if (this.allotUnit.userUnit.length==0 || this.allotUnit.userUnit[0].unitRate==0){
+                this.$notify({
+                  title: '提示',
+                  message: '项目计件数未分配,请先分配后再提交',
+                  type: 'error',
+                  duration: 2000,
+                });
+                verify.state = false;
+                callback(verify);
+                return;
+             }
+             break;
+          }
         callback(verify);
       }
       if (commit.state === 'REVERSE') {
@@ -3816,6 +3975,7 @@ export default {
     },
     closeLandTarget() {
       this.houseToUse = [];
+      this.sceneImages = [];
       for (let k in this.landTarget) {
         this.landTarget[k] = null;
       }
@@ -4100,11 +4260,97 @@ export default {
       this.needAddToPerformanceUsers = [];
     },
     removePerformanceList(a){
-      console.log(this.allotPerformance.performanceList);
-      console.log(a)
       this.allotPerformance.performanceList = this.allotPerformance.performanceList.filter(item=>item.userId!=a.userId);
-      console.log(this.allotPerformance.performanceList)
-    }
+    },
+    sceneImageRemove(file, fileList) {
+        this.sceneImages = fileList;
+        this.landTarget.sceneImage = fileList;
+      },
+    sceneImagePreview(file) {
+      console.log(file);
+    },
+    sceneImagesExceed(){
+      this.$message.warning(`当前限制只能上传一张现场照片`);
+    },
+    sceneImageBeforeRemove(file, fileList) {
+      return this.$confirm(`确定移除 ${ file.name }?`);
+    },
+    sceneImagesSuccess(res, sceneImages){
+      if (res.code === 200) {
+        res.data.name = res.data.fileName;
+        res.data.fileName = null;
+        this.sceneImages.push(res.data);
+        this.landTarget.sceneImage = JSON.stringify(this.sceneImages);
+      } else {
+        this.$notify({
+          title: '错误',
+          message: '现场照片上传失败',
+          type: 'error',
+          duration: 2000,
+          offset: 100
+        });
+        sceneImages.pop();
+      }
+    },
+    getDistrictsOptions(){
+        const that = this;
+        that.$api.districts.tree().then(data => {
+          if (data.code === 200) {
+            that.districtsOptions = data.data
+          } else {
+            this.$message({
+              type: 'error',
+              message: data.msg
+            })
+          }
+        })
+      },
+    openAllotUnitDialog(){
+      this.allotUnitDialog = true;
+      this.$api.majorAppraiserUnit.query(this.major.id).then(res=>{
+        if (res.code === 200 && res.data.userUnit.length>0){
+            this.allotUnit = res.data;
+        }else {
+          this.allotUnit.userUnit = [];
+          this.allotUnit.majorId= this.major.id;
+          let p = new Object();
+          p.userId= this.major.principalId;
+          p.unitRate = 0.0;
+          p.isPrincipal = true;
+          this.allotUnit.userUnit.push(p);
+          for (let i in this.major.membersId){
+            let j = new Object();
+            j.userId= this.major.membersId[i];
+            j.unitRate = 0.0;
+            this.allotUnit.userUnit.push(j);
+          }
+        }
+      })
+      
+    },
+    saveAllotUnit(){
+      const units = this.allotUnit.userUnit;
+      let sum = 0;
+      for (let i in units){
+        if (units[i].unitRate<=0){
+            this.$message('不能填入负数或0','error')
+            return;
+        }
+        sum +=units[i].unitRate;
+      }
+      this.$api.majorAppraiserUnit.save(this.allotUnit).then(res=>{
+        if (res.code===200 && res.data){
+          this.$notify({
+            title: '成功',
+            message: '分配成功',
+            type: 'success',
+            duration: 2000
+          });
+          this.allotUnitDialog = false;
+        }
+      })
+
+    },
   },
 }
 </script>
@@ -4234,7 +4480,8 @@ a:hover{
   position: relative;
   top: -2px;
 }
-.el-icon-delete:hover{
+
+/deep/ .prefix :hover{
   cursor: pointer;
 }
 </style>