LAPTOP-FO2T5SIU\35838 10 місяців тому
батько
коміт
fcfd05878b

+ 2 - 2
src/views/customerManagement/subscribe/subscribeIndex.vue

@@ -132,12 +132,12 @@ export default {
                 this.$refs.addSubscribe.initData(val)
             })
         },
-        getData: function(val) {
+        getData: function() {
             const _this = this
             _this.loading = true
             _this.AllData = []
             const data = {
-                customerManagementId: val
+                customerManagementId: this.customerManagementId
             }
             this.baseRequest('listAll', data).then((res) => {
                 if (res.data) {

+ 1 - 0
src/views/parkAssets/parkRoom/index.vue

@@ -626,6 +626,7 @@ export default {
             this.isView = false
             this.urlStr = 'add'
             this.dialogVisible = true
+            this.fileList = []
             this.dialogTitle = '新增房间'
         },
         handleEdit: function(val) {

+ 242 - 549
src/views/signingManagement/contractManagement/contractAdd.vue

@@ -5,127 +5,140 @@
         <el-col style="padding-bottom: 10px">
           <el-card shadow="always" style="padding: 15px 5px 5px 15px">
             <el-row>
-              <el-col :span="5" class="col-txt">
-                合同编号:{{ form.contractNo }}
-              </el-col>
-              <el-col :span="3" class="col-txt"><span>合同原件</span></el-col>
-              <el-col :span="3" class="col-input">
+              <el-col :span="5" class="col-txt"><span>网签备案号</span></el-col>
+              <el-col :span="18" class="col-input">
                 <el-form-item>
-                  <el-upload
-                    class="upload-demo"
-                    action="/server/wx/fileController/uploadImage"
-                    :http-request="uploadPhoto"
-                    :before-remove="beforeRemove"
-                    multiple
-                    :file-list="contractOriginalList"
-                  >
-                    <el-button size="small" type="primary">点击上传</el-button>
-                    <div slot="file" slot-scope="{file}">
-                      <a :href="file.url">{{ file.name }}</a>
-                      <span class="el-upload-list__item-actions">
-                        <i class="el-icon-delete" @click="handlePictureRemove(file,contractOriginalList)" />
-                      </span>
-                    </div>
-                  </el-upload>
+                  <el-input v-model="form.recordNumber" />
                 </el-form-item>
               </el-col>
-              <el-col :span="3" class="col-txt"><span>其他附件</span></el-col>
-              <el-col :span="3" class="col-input">
-                <el-form-item>
-                  <el-upload
-                    class="upload-demo"
-                    action="/server/wx/fileController/uploadImage"
-                    :http-request="uploadContractOther"
-                    :before-remove="beforeRemove"
-                    multiple
-                    :file-list="contractOtherList"
-                  >
-                    <el-button size="small" type="primary">点击上传</el-button>
-                    <div slot="file" slot-scope="{file}">
-                      <a :href="file.url">{{ file.name }}</a>
-                      <span class="el-upload-list__item-actions">
-                        <i class="el-icon-delete" @click="handlePictureRemove(file,contractOtherList)" />
-                      </span>
-                    </div>
-                  </el-upload>
+            </el-row>
+            <el-row>
+              <el-col :span="5" class="col-txt"><span>*合同编号</span></el-col>
+              <el-col :span="18" class="col-input">
+                <el-form-item prop="contractNumber">
+                  <el-input v-model="form.contractNumber" />
                 </el-form-item>
               </el-col>
-              <el-col :span="6" class="col-input">
-                <!--                  <el-button type="primary" style="float: right" :disabled="effectFlag" :loading="effectLoadingFlag" @click="takeEffect">合同生效</el-button>-->
-              </el-col>
             </el-row>
             <el-row>
-              <el-col :span="5" class="col-txt"><span>合同类别</span></el-col>
+              <el-col :span="5" class="col-txt"><span>出卖人</span></el-col>
               <el-col :span="18" class="col-input">
-                <el-form-item prop="contractCategory">
-                  <el-select v-model="form.contractCategory" placeholder="请选择" :disabled="effectFlag">
-                    <el-option
-                      v-for="item in dc_data.CONTRACT_CATEGORY"
-                      :key="item.value"
-                      :label="item.label"
-                      :value="item.value"
-                    />
-                  </el-select>
+                <el-form-item>
+                  <el-input v-model="form.seller" readonly />
                 </el-form-item>
               </el-col>
             </el-row>
             <el-row>
-              <el-col :span="5" class="col-txt"><span>关联项目</span></el-col>
-              <el-col :span="15" class="col-input">
+              <!-- 特殊表单 -->
+              <div v-for="(item, index) in form.dynamicItem" :key="index">
+                <el-row style="margin-top: 10px">
+                  <el-col :span="2" class="col-txt"><span>购房人{{ index + 1 }}</span></el-col>
+                  <el-col :span="4" class="col-input">
+                    <el-form-item :prop="'dynamicItem.' + index + '.name'">
+                      <el-input
+                        v-model="item.name"
+                        placeholder="请填写姓名"
+                      />
+                    </el-form-item>
+                  </el-col>
+                  <el-col :span="4" class="col-input">
+                    <el-form-item :prop="'dynamicItem.' + index + '.identityCard'">
+                      <el-input
+                        v-model="item.identityCard"
+                        placeholder="请填写身份证号"
+                      />
+                    </el-form-item>
+                  </el-col>
+                  <el-col :span="4" class="col-input">
+                    <el-form-item :prop="'dynamicItem.' + index + '.phone'">
+                      <el-input
+                        v-model="item.phone"
+                        placeholder="请填写手机号"
+                      />
+                    </el-form-item>
+                  </el-col>
+                  <el-col v-if="index !== 0" :span="6" class="col-input">
+                    <el-form-item :prop="'dynamicItem.' + index + '.relationship'">
+                      <el-select
+                        v-model="item.relationship"
+                        placeholder="与1的关系"
+                        filterable
+                        :popper-append-to-body="false"
+                        popper-class="statistic_base"
+                      >
+                        <el-option
+                          v-for="relationship in dc_data.RELATIONSHIP"
+                          :key="relationship.value"
+                          :label="relationship.label"
+                          :value="relationship.value"
+                          :popper-append-to-body="false"
+                          popper-class="statistic_base"
+                        />
+                      </el-select>
+                    </el-form-item>
+                  </el-col>
+                  <el-col :span="2" class="col-input">
+                    <el-button v-if="index !== 0" type="danger" size="mini" @click="deleteItem(item, index)">-</el-button>
+                  </el-col>
+                </el-row>
+              </div>
+            </el-row>
+            <el-row>
+              <el-col :span="5" class="col-txt"><span>房屋</span></el-col>
+              <el-col :span="18" class="col-input">
                 <el-form-item>
-                  <el-input
-                    v-model="projectObject"
-                    placeholder="请选择项目"
-                    disabled
+                  <el-cascader
+                    v-model="form.houseIds"
+                    :append-to-body="false"
+                    :disabled="isView"
+                    style="width: 100%;"
+                    :options="TreeData"
+                    @change="houseChange"
                   />
                 </el-form-item>
               </el-col>
-              <el-col :span="4">
-                <el-button style="margin-left: 10px" type="primary" :disabled="effectFlag" @click="saleSelect">选择项目</el-button>
-              </el-col>
             </el-row>
             <el-row>
-              <el-col :span="5" class="col-txt"><span>甲方</span></el-col>
-              <el-col :span="18" class="col-txt">
-                <el-form-item prop="partyA">
-                  <el-select v-model="form.partyA" placeholder="请选择" :disabled="effectFlag">
-                    <el-option
-                      v-for="item in dc_data.PARTY_A"
-                      :key="item.value"
-                      :label="item.label"
-                      :value="item.value"
-                    />
-                  </el-select>
+              <el-col :span="5" class="col-txt"><span>*实测建筑面积</span></el-col>
+              <el-col :span="18" class="col-input">
+                <el-form-item prop="actualBuildArea">
+                  <el-input v-model="form.actualBuildArea" readonly />
                 </el-form-item>
               </el-col>
             </el-row>
             <el-row>
-              <el-col :span="5" class="col-txt"><span>*乙方/三方协议丙方</span></el-col>
-              <el-col :span="15" class="col-input">
-                <el-form-item prop="enterpriseObject">
-                  <el-autocomplete
-                    v-model="enterpriseObject"
-                    class="inline-input"
-                    :fetch-suggestions="querySearch"
-                    placeholder="请输入公司名称"
-                    style="width: 95%"
-                    :disabled="effectFlag"
-                    @select="enterpriseSelect"
-                  />
+              <el-col :span="5" class="col-txt"><span>套内建筑面积</span></el-col>
+              <el-col :span="18" class="col-input">
+                <el-form-item>
+                  <el-input v-model="form.actualInternalArea" readonly />
                 </el-form-item>
               </el-col>
-              <el-col :span="4">
-                <el-button v-if="fromAddress != 'goToContract' " type="primary" :disabled="!isAdd" @click="openCompany()">去新增</el-button>
+            </el-row>
+            <el-row>
+              <el-col :span="5" class="col-txt"><span>分摊共有建筑</span></el-col>
+              <el-col :span="18" class="col-input">
+                <el-form-item>
+                  <el-input v-model="form.actualShareArea" readonly />
+                </el-form-item>
               </el-col>
             </el-row>
             <el-row>
-              <el-col :span="5" class="col-txt"><span>三方协议乙方</span></el-col>
+              <el-col :span="5" class="col-txt"><span>房产测绘机构</span></el-col>
               <el-col :span="18" class="col-input">
-                <el-form-item prop="partyA">
-                  <el-select v-model="form.partyC" placeholder="请选择" :disabled="effectFlag">
+                <el-form-item>
+                  <el-select
+                    v-model="form.institution"
+                    :popper-append-to-body="false"
+                    popper-class="statistic_base"
+                    placeholder=""
+                    filterable
+                    :disabled="isView"
+                  >
                     <el-option
-                      v-for="item in dc_data.PARTY_C"
+                      v-for="item in dc_data.MAPPING_INSTITUTION"
                       :key="item.value"
+                      popper-class="statistic_base"
+                      :popper-append-to-body="false"
                       :label="item.label"
                       :value="item.value"
                     />
@@ -134,201 +147,120 @@
               </el-col>
             </el-row>
             <el-row>
-              <el-col :span="5" class="col-txt"><span>*合同日期起止</span></el-col>
-              <el-col :span="7" class="col-input">
-                <el-form-item prop="startDate">
+              <el-col :span="5" class="col-txt"><span>签约日期</span></el-col>
+              <el-col :span="18" class="col-input">
+                <el-form-item>
                   <el-date-picker
-                    v-model="form.startDate"
-                    value-format="yyyy-MM-dd"
+                    v-model="form.signingDate"
                     type="date"
-                    placeholder="选择日期"
-                    :disabled="effectFlag"
-                  />
-                </el-form-item>
-              </el-col>
-              <el-col :span="1" class="col-txt"><span>~</span></el-col>
-              <el-col :span="7" class="col-input">
-                <el-form-item prop="endDate">
-                  <el-date-picker
-                    v-model="form.endDate"
+                    placeholder="年月日"
                     value-format="yyyy-MM-dd"
-                    type="date"
-                    placeholder="选择日期"
-                    :picker-options="pickerOptions0"
-                    :disabled="effectFlag"
                   />
                 </el-form-item>
               </el-col>
             </el-row>
             <el-row>
-              <el-col :span="5" class="col-txt"><span>*筹备期</span></el-col>
-              <el-col :span="5" class="col-txt">
-                <el-form-item prop="preparationPeriodType">
-                  <el-select v-model="form.preparationPeriodType" placeholder="请选择" :disabled="effectFlag">
-                    <el-option
-                      v-for="item in dc_data.PREPARATION_PERIOD_TYPE"
-                      :key="item.value"
-                      :label="item.label"
-                      :value="item.value"
-                    />
-                  </el-select>
-                </el-form-item>
+              <el-col :span="5" class="col-txt"><span>备注说明</span></el-col>
+              <el-col :span="18" class="col-input">
+                <el-input v-model="form.remark" type="textarea" maxlength="2000" show-word-limit :disabled="isView" />
               </el-col>
-              <el-col :span="13" class="col-txt">
-                <el-form-item prop="preparationPeriod">
-                  <el-input
-                    v-model="form.preparationPeriod"
-                    :disabled="effectFlag"
-                  />
+            </el-row>
+            <el-row>
+              <el-divider />
+            </el-row>
+            <el-row>
+              <el-col :span="5" class="col-txt"><span style="font-weight: bold;font-size: large">房价款</span></el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="5" class="col-txt"><span>房屋买卖单价(元/㎡)</span></el-col>
+              <el-col :span="18" class="col-input">
+                <el-form-item>
+                  <el-input v-model="form.housePrice" readonly />
                 </el-form-item>
               </el-col>
             </el-row>
             <el-row>
-              <el-col :span="5" class="col-txt">
-                <el-button size="small" type="primary" :disabled="effectFlag" @click="addItem">添加载体</el-button>
+              <el-col :span="5" class="col-txt"><span>总价款(元)</span></el-col>
+              <el-col :span="18" class="col-input">
+                <el-form-item>
+                  <el-input v-model="form.totalPrice" />
+                </el-form-item>
               </el-col>
             </el-row>
-            <!-- 特殊表单 -->
-            <div v-for="(item, index) in form.dynamicItem" :key="index" style="border:1px solid #000;">
-              <el-row>
-                <el-col :span="5" class="col-txt"><span>*出租载体</span></el-col>
-                <el-col :span="16" class="col-input">
-                  <el-form-item prop="'dynamicItem.' + index + '.estateBuildingRoomNoList'">
-                    <el-cascader
-                      v-model="item.estateBuildingRoomNoList"
-                      :disabled="effectFlag"
-                      class="full"
-                      :options="TreeData"
-                      @change="getArea(item,index)"
-                    />
-                  </el-form-item>
-                </el-col>
-                <el-col :span="2" class="col-input">
-                  <el-button v-if="index !== 0" type="danger" size="mini" :disabled="effectFlag" @click="deleteItem(item, index)">-</el-button>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="5" class="col-txt"><span>*面积</span></el-col>
-                <el-col :span="16" class="col-input">
-                  <el-form-item prop="'area.' + index + '.area'">
-                    <el-input
-                      v-model="item.area"
-                      :disabled="effectFlag"
-                      placeholder=""
-                    />
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="5" class="col-txt"><span>*租金单价</span></el-col>
-                <el-col :span="5" class="col-txt">
-                  <el-form-item prop="'dynamicItem.' + index + '.priceType'">
-                    <el-select v-model="item.priceType" placeholder="请选择" :disabled="effectFlag">
-                      <el-option
-                        v-for="dc_item in dc_data.PRICE_TYPE"
-                        :key="dc_item.value"
-                        :label="dc_item.label"
-                        :value="dc_item.value"
-                      />
-                    </el-select>
-                  </el-form-item>
-                </el-col>
-                <el-col :span="6" class="col-input">
-                  <el-form-item prop="'dynamicItem.' + index + '.price'">
-                    <el-input
-                      v-model="item.price"
-                      :disabled="effectFlag"
-                      placeholder="请输入单价"
-                    />
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="5" class="col-txt"><span>*月租金(元)</span></el-col>
-                <el-col :span="16" class="col-input">
-                  <el-form-item prop="'dynamicItem.' + index + '.monthPrice'">
-                    <el-input
-                      v-model="item.monthPrice"
-                      :disabled="effectFlag"
-                      placeholder=""
-                    />
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="5" class="col-txt"><span>物业费单价(元/平方米/月)</span></el-col>
-                <el-col :span="16" class="col-input">
-                  <el-form-item prop="'dynamicItem.' + index + '.propertyManagementFeePrice'">
-                    <el-input
-                      v-model="item.propertyManagementFeePrice"
-                      :disabled="effectFlag"
-                      placeholder="请输入"
-                    />
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="5" class="col-txt"><span>月物业费(元)</span></el-col>
-                <el-col :span="16" class="col-input">
-                  <el-form-item prop="'dynamicItem.' + index + '.monthlyPropertyManagementFee'">
-                    <el-input
-                      v-model="item.monthlyPropertyManagementFee"
-                      :disabled="effectFlag"
-                      placeholder="请输入"
-                    />
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="5" class="col-txt"><span>*租期(月)</span></el-col>
-                <el-col :span="16" class="col-input">
-                  <el-form-item prop="'dynamicItem.' + index + '.leaseCycle'">
-                    <el-input
-                      v-model="item.cycle"
-                      :disabled="effectFlag"
-                      placeholder="请输入"
-                    />
-                  </el-form-item>
-                </el-col>
-              </el-row>
-            </div>
             <el-row>
-              <el-col :span="5" class="col-txt"><span>*总租金金额(万元)</span></el-col>
+              <el-col :span="5" class="col-txt"><span>买受人产权份额占比为</span></el-col>
               <el-col :span="18" class="col-input">
-                <el-form-item prop="totalRent">
-                  <el-input v-model="form.totalRent" :disabled="effectFlag" />
+                <el-form-item>
+                  <el-input v-model="form.buyerProportion" />
                 </el-form-item>
               </el-col>
             </el-row>
             <el-row>
-              <el-col :span="5" class="col-txt"><span>*第一期租金(元)</span></el-col>
+              <el-col :span="5" class="col-txt"><span>买受人出资金额(元)</span></el-col>
               <el-col :span="18" class="col-input">
-                <el-form-item prop="firstRent">
-                  <el-input v-model="form.firstRent" :disabled="effectFlag" />
+                <el-form-item>
+                  <el-input v-model="form.buyerMoney" />
                 </el-form-item>
               </el-col>
             </el-row>
             <el-row>
-              <el-col :span="5" class="col-txt"><span>总物业费金额(万元)</span></el-col>
+              <el-col :span="5" class="col-txt"><span>付款方式</span></el-col>
               <el-col :span="18" class="col-input">
-                <el-form-item prop="totalPropertyCost">
-                  <el-input v-model="form.totalPropertyCost" :disabled="effectFlag" />
+                <el-form-item>
+                  <el-select
+                    v-model="form.paymentMethod"
+                    placeholder="请选择"
+                    size="small"
+                    :disabled="isView"
+                    :popper-append-to-body="false"
+                    popper-class="statistic_base"
+                  >
+                    <el-option
+                      v-for="item in dc_data.PAYMENT_METHOD"
+                      :key="item.value"
+                      :popper-append-to-body="false"
+                      popper-class="statistic_base"
+                      :label="item.label"
+                      :value="item.value"
+                    />
+                  </el-select>
                 </el-form-item>
               </el-col>
             </el-row>
             <el-row>
-              <el-col :span="5" class="col-txt"><span>第一期物业费(元)</span></el-col>
+              <el-col :span="5" class="col-txt"><span>首付比例</span></el-col>
               <el-col :span="18" class="col-input">
-                <el-form-item prop="firstPropertyManagementFee">
-                  <el-input v-model="form.firstPropertyManagementFee" :disabled="effectFlag" />
+                <el-form-item>
+                  <el-select
+                    v-model="form.downPaymentsProportion"
+                    placeholder="请选择"
+                    size="small"
+                    :disabled="isView"
+                    :popper-append-to-body="false"
+                    popper-class="statistic_base"
+                  >
+                    <el-option
+                      v-for="item in dc_data.DOWN_PAYMENT_PROPORTION"
+                      :key="item.value"
+                      :popper-append-to-body="false"
+                      popper-class="statistic_base"
+                      :label="item.label"
+                      :value="item.value"
+                    />
+                  </el-select>
                 </el-form-item>
               </el-col>
             </el-row>
             <el-row>
-              <el-col :span="5" class="col-txt"><span>*房屋保证金(元)</span></el-col>
+              <el-col :span="5" class="col-txt"><span>付款截止日</span></el-col>
               <el-col :span="18" class="col-input">
-                <el-form-item prop="bond">
-                  <el-input v-model="form.bond" :disabled="effectFlag" />
+                <el-form-item>
+                  <el-date-picker
+                    v-model="form.deadline"
+                    type="date"
+                    placeholder="年月日"
+                    value-format="yyyy-MM-dd"
+                  />
                 </el-form-item>
               </el-col>
             </el-row>
@@ -336,62 +268,70 @@
               <el-divider />
             </el-row>
             <el-row>
-              <el-col :span="5" class="col-txt"><span style="font-weight: bold;font-size: large">*入驻款(元)</span></el-col>
+              <el-col :span="5" class="col-txt"><span style="font-weight: bold;font-size: large">专项维修资金</span></el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="5" class="col-txt"><span>住宅专项维修资金(元/㎡)</span></el-col>
               <el-col :span="18" class="col-input">
-                <el-form-item prop="settlementPayment">
-                  <el-input v-model="form.settlementPayment" :disabled="effectFlag" />
+                <el-form-item>
+                  <el-date-picker
+                    v-model="form.maintenanceFunds"
+                    type="date"
+                    placeholder="年月日"
+                    value-format="yyyy-MM-dd"
+                  />
                 </el-form-item>
               </el-col>
             </el-row>
             <el-row>
-              <el-col :span="5" class="col-txt"><span>签约资料</span></el-col>
+              <el-col :span="5" class="col-txt"><span>总价款(元)</span></el-col>
               <el-col :span="18" class="col-input">
+                <el-form-item>
+                  <el-input v-model="form.maintenanceTotalPrice" />
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="5" class="col-txt"><span>合同原件</span></el-col>
+              <el-col :span="5" class="col-input">
                 <el-form-item>
                   <el-upload
                     class="upload-demo"
                     action="/server/wx/fileController/uploadImage"
-                    :http-request="uploadSigningMaterials"
+                    :http-request="uploadPhoto"
                     :before-remove="beforeRemove"
                     multiple
-                    :file-list="signingMaterialsList"
-                    :disabled="effectFlag || isView"
+                    :file-list="contractOriginalList"
                   >
                     <el-button size="small" type="primary">点击上传</el-button>
                     <div slot="file" slot-scope="{file}">
                       <a :href="file.url">{{ file.name }}</a>
                       <span class="el-upload-list__item-actions">
-                        <i class="el-icon-delete" @click="handlePictureRemove(file,signingMaterialsList)" />
+                        <i class="el-icon-delete" @click="handlePictureRemove(file,contractOriginalList)" />
                       </span>
                     </div>
                   </el-upload>
                 </el-form-item>
               </el-col>
-            </el-row>
-            <el-row v-if="retreatFlag">
-              <el-col :span="5" class="col-txt"><span style="font-weight: bold;font-size: large">退租信息</span></el-col>
-              <el-col :span="18" class="col-input" style="border:1px solid transparent;" />
-            </el-row>
-            <el-row v-if="retreatFlag">
-              <el-col :span="5" class="col-txt"><span>退租时间</span></el-col>
-              <el-col :span="18" class="col-input">
-                <el-form-item prop="retreatDate">
-                  <el-input v-model="form.retreatDate" disabled/>
-                </el-form-item>
-              </el-col>
-            </el-row>
-            <el-row v-if="retreatFlag">
-              <el-col :span="5" class="col-txt"><span>退租确认人</span></el-col>
-              <el-col :span="18" class="col-input">
-                <el-form-item prop="retreatDate">
-                  <el-input v-model="form.retreatConfirmName" disabled/>
-                </el-form-item>
-              </el-col>
-            </el-row>
-            <el-row v-if="retreatFlag">
-              <el-col :span="5" class="col-txt"><span>退租说明</span></el-col>
-              <el-col :span="18" class="col-input">
-                <el-form-item prop="retreatRemark">
-                  <el-input v-model="form.retreatRemark" disabled/>
+              <el-col :span="5" class="col-txt"><span>其他附件</span></el-col>
+              <el-col :span="5" class="col-input">
+                <el-form-item>
+                  <el-upload
+                    class="upload-demo"
+                    action="/server/wx/fileController/uploadImage"
+                    :http-request="uploadContractOther"
+                    :before-remove="beforeRemove"
+                    multiple
+                    :file-list="contractOtherList"
+                  >
+                    <el-button size="small" type="primary">点击上传</el-button>
+                    <div slot="file" slot-scope="{file}">
+                      <a :href="file.url">{{ file.name }}</a>
+                      <span class="el-upload-list__item-actions">
+                        <i class="el-icon-delete" @click="handlePictureRemove(file,contractOtherList)" />
+                      </span>
+                    </div>
+                  </el-upload>
                 </el-form-item>
               </el-col>
             </el-row>
@@ -400,8 +340,9 @@
       </el-row>
     </el-form>
     <div slot="footer" style="text-align: right">
-      <el-button @click="cancel()">取 消</el-button>
-      <el-button v-if="!isView" type="primary" @click="confirmSubmit()">确 定</el-button>
+      <el-button @click="cancel()">关 闭</el-button>
+      <el-button type="primary" @click="confirmSubmit()">暂 存</el-button>
+      <el-button type="primary" @click="confirmSubmit()">签 约</el-button>
     </div>
   </div>
 </template>
@@ -410,23 +351,9 @@ import Base from '@/views/base/base'
 import BaseData from '@/views/base/baseData'
 import { upload } from '@/static/utils/channel'
 
-const checkNumber = (rule, value, callback) => {
-    const numreg = /^[0-9][0-9]*(\.[0-9]{1,2})?$/
-    if (!value && value != 0) {
-        return callback(new Error('请输入二位小数或整数'))
-    }
-    if (numreg.test(value)) {
-        callback()
-    } else {
-        callback(new Error('请输入二位小数或整数'))
-    }
-}
-
 export default {
     name: 'ContractManage',
     components: {
-        SaleManagement,
-        CompanyEdit
     },
     mixins: [Base, BaseData],
     props: {
@@ -441,124 +368,36 @@ export default {
         }
     },
     data() {
-        const validateEnterPrise = (rule, value, callback) => {
-            if (!this.enterpriseObject) {
-                callback(new Error('请选择乙方!'))
-            } else {
-                callback()
-            }
-        }
         return {
-            dc_key: ['CONTRACT_STATUS', 'PAYMENT_CYCLE', 'TEMPLATE_TYPE', 'SETTLE_IN_STATUS', 'BOND_STATUS',
-                'CONTRACT_TYPE', 'PARTY_C', 'PREPARATION_PERIOD_TYPE', 'PRICE_TYPE', 'CONTRACT_CATEGORY', 'PARTY_A'],
-            enterpriseObject: '',
-            enterpriseList: [],
-            projectObject: '',
-            projectList: [],
+            dc_key: ['CONTRACT_STATUS', 'MAPPING_INSTITUTION', 'PAYMENT_METHOD', 'DOWN_PAYMENT_PROPORTION'],
             // 弹框相关
             dialogVisible: false,
             dialogTitle: '新增',
             isAdd: true,
-            form: this.initForm(),
-            rules: {
-                contractCategory: [
-                    {
-                        required: true,
-                        message: '请选择合同类别',
-                        trigger: 'change'
-                    }
-                ],
-                enterpriseObject: [
-                    {
-                        validator: validateEnterPrise,
-                        message: '请选择乙方',
-                        trigger: 'change'
-                    }
-                ],
-                startDate: [
-                    {
-                        required: true,
-                        message: '请选择开始日期',
-                        trigger: 'change'
-                    }
-                ],
-                endDate: [
-                    {
-                        required: true,
-                        message: '请选择结束日期',
-                        trigger: 'change'
-                    }
-                ],
-                preparationPeriodType: [
-                    {
-                        required: true,
-                        message: '请选择筹备期类型',
-                        trigger: 'blur'
-                    }
-                ],
-                preparationPeriod: [
-                    {
-                        required: true,
-                        message: '请选择筹备期',
-                        trigger: 'blur'
-                    }
-                ],
-                totalRent: [
-                    {
-                        required: true,
-                        validator: checkNumber,
-                        trigger: 'blur'
-                    }
-                ],
-                firstRent: [
-                    {
-                        required: true,
-                        message: '请输入第一期租金(元)',
-                        trigger: 'change'
-                    }
-                ],
-                // totalPropertyCost: [
-                //     {
-                //         required: true,
-                //         message: '请输入总物业费金额(万元)',
-                //         trigger: 'change'
-                //     }
-                // ],
-                // firstPropertyManagementFee: [
-                //     {
-                //         required: true,
-                //         message: '请输入第一期物业费(元)',
-                //         trigger: 'change'
-                //     }
-                // ],
-                bond: [
-                    {
-                        required: true,
-                        message: '请输入房屋保证金(元)',
-                        trigger: 'change'
-                    }
-                ],
-                settlementPayment: [
+            form: {
+                dynamicItem: [
                     {
-                        required: true,
-                        message: '请输入房屋保证金(元)',
-                        trigger: 'change'
+                        id: '',
+                        customerManagementId: '',
+                        name: '',
+                        identityCard: '',
+                        phone: '',
+                        relationship: ''
                     }
                 ]
             },
+            rules: {
+                contractNumber: [{ required: true, trigger: 'blur', message: '请输入合同编号' }],
+                actualBuildArea: [{ required: true, trigger: 'blur', message: '实测建筑面积' }]
+            },
             contractOriginalList: [],
             contractOtherList: [],
             signingMaterialsList: [],
             contractId: '',
             TreeData: [],
             isView: false, // 查看按钮权限,
-            dialogSaleVisible: false, // 项目列表
-            dialogCompanyVisible: false,
-            dialogCompanyTitle: '',
             searchTreeData: [],
-            excelFlag: false,
-            effectFlag: false,
-            retreatFlag: false
+            effectFlag: false
         }
     },
     watch: {
@@ -566,7 +405,6 @@ export default {
     },
     mounted() {
         this.findRoomTree()
-        this.findBuildTree()
         this.initDict(this.dc_key).then((res) => {
         })
     },
@@ -634,67 +472,6 @@ export default {
                 })
             }
         },
-        addItem(length) {
-            this.form.dynamicItem.push({
-                estateBuildingRoomNoList: [],
-                area: '',
-                priceType: '',
-                price: '',
-                monthPrice: '',
-                propertyManagementFeePrice: '',
-                monthlyPropertyManagementFee: '',
-                cycle: '',
-                groupId: '',
-                discId: '',
-                buildId: '',
-                houseId: ''
-            })
-        },
-        // 删除方法
-        deleteItem(item, index) {
-            this.form.dynamicItem.splice(index, 1)
-        },
-        // 结束时间小于开始时间
-        pickerOptions0: {
-            disabledDate: (time) => {
-                return time.getTime() > Date.now()
-            }
-        },
-        querySearch(queryString, cb) {
-            this.enterpriseList = []
-            this.baseCompanyRequest('getAllBaseCompany', { name: queryString, limit: 20 }).then(res => {
-                res.data.forEach(item => {
-                    this.enterpriseList.push({
-                        id: item.id,
-                        value: item.qymc,
-                        shxydm: item.shxydm
-                    })
-                })
-                const enterpriseList = this.enterpriseList
-                const results = queryString
-                    ? enterpriseList.filter(this.createFilter(queryString))
-                    : enterpriseList
-                // 调用 callback 返回建议列表的数据
-                cb(results)
-            })
-        },
-        createFilter(queryString) {
-            return enterpriseObject => {
-                return (
-                    enterpriseObject.value.toLowerCase().indexOf(queryString.toLowerCase()) !== -1
-                )
-            }
-        },
-        enterpriseSelect() {
-            this.form.enterpriseName = this.enterpriseObject
-            const obj = this.enterpriseList.find(item =>
-                item.value === this.enterpriseObject
-            )
-            if (obj !== undefined) {
-                this.form.enterpriseId = obj.id
-                this.form.creditCode = obj.shxydm
-            }
-        },
         findRoomTree: function() {
             const _this = this
             this.pubRequest('getTreeData4', '').then((res) => {
@@ -702,13 +479,6 @@ export default {
             }).catch(() => {
             })
         },
-        findBuildTree: function() {
-            const _this = this
-            this.pubRequest('getTreeData2', '').then((res) => {
-                _this.searchTreeData = res.data.data
-            }).catch(() => {
-            })
-        },
         uploadPhoto: function(param) {
             upload(param, true).then((res) => {
                 this.contractOriginalList.push(res)
@@ -719,11 +489,6 @@ export default {
                 this.contractOtherList.push(res)
             })
         },
-        uploadSigningMaterials: function(param) {
-            upload(param, true).then((res) => {
-                this.signingMaterialsList.push(res)
-            })
-        },
         initForm: function() {
             return {
                 id: '',
@@ -876,24 +641,6 @@ export default {
         cancel() {
             this.$emit('contractAddClose')
         },
-        openCompany() {
-            // this.$refs.company.setVisible(true)
-            this.dialogCompanyVisible = true
-            this.dialogCompanyTitle = '新增'
-            this.$nextTick(() => {
-                this.$refs.companyEdit.initData('', true, false)
-            })
-        },
-        closeCompany(data) {
-            console.log('执行关闭', data)
-            this.dialogCompanyVisible = false
-            if (data) {
-                this.enterpriseObject = data.qymc
-                this.form.enterpriseName = data.qymc
-                this.form.creditCode = data.creditCode
-                this.form.examineId = data.id
-            }
-        },
         // 计算面积
         getArea(val, index) {
             console.log('val', val.estateBuildingRoomNoList)
@@ -908,50 +655,8 @@ export default {
                 })
             }
         },
-        saleSelect() {
-            this.dialogSaleVisible = true
-        },
-        saleConfirm(data) {
-            const _this = this
-            console.log('子页面传值==', data.selection)
-            // 点击保存
-            if (data.type === 'save') {
-                this.form.projectId = data.selection[0].id
-                this.form.projectName = data.selection[0].projectName
-                this.projectObject = data.selection[0].projectName
-                // 填充出租载体
-                this.baseRoomRequest('getBySaleId', { id: this.form.projectId }).then(res => {
-                    const data = res.data
-                    _this.form.dynamicItem = data
-                    _this.form.dynamicItem.forEach((item) => {
-                        const groupId = item.groupId
-                        const discId = item.discId
-                        const buildId = item.buildId
-                        const id = item.id
-                        item.estateBuildingRoomNoList = []
-                        item.estateBuildingRoomNoList.push(groupId)
-                        item.estateBuildingRoomNoList.push(discId)
-                        item.estateBuildingRoomNoList.push(buildId)
-                        item.estateBuildingRoomNoList.push(id)
-                        item.area = item.size
-                    })
-                    _this.form.dynamicItem = _this.form.dynamicItem.map((item) => {
-                        const obj = {
-                            estateBuildingRoomNoList: item.estateBuildingRoomNoList,
-                            area: item.area
-                        }
-                        return obj
-                    })
-                    console.log('_this.form.dynamicItem', _this.form.dynamicItem)
-                    this.$forceUpdate()
-                })
-                // 填充签约资料
-                this.baseProjectRequest('getById', { id: this.form.projectId }).then(res => {
-                    const data = res.data
-                    this.signingMaterialsList = data.successPictureAddress ? this.$common.castEval(data.successPictureAddress) : []
-                })
-            }
-            this.dialogSaleVisible = false
+        houseChange() {
+
         },
         baseRequest(opUrl, postData) {
             return this.$channel.globeRequest('ParkContractManageController', opUrl, postData, 'project')
@@ -959,20 +664,8 @@ export default {
         pubRequest(opUrl, postData) {
             return this.$channel.globeRequest('ParkInfoController', opUrl, postData, 'project')
         },
-        userMainExpandRequest(opUrl, postData) {
-            return this.$channel.globeRequest('UserMainExpandController', opUrl, postData, 'project')
-        },
-        baseRentRequest(opUrl, postData) {
-            return this.$channel.globeRequest('ContractRentController', opUrl, postData, 'project')
-        },
         baseRoomRequest(opUrl, postData) {
             return this.$channel.globeRequest('ParkRoomController', opUrl, postData, 'project')
-        },
-        baseCompanyRequest(opUrl, postData) {
-            return this.$channel.globeRequest('MnpCompanyController', opUrl, postData, 'project')
-        },
-        baseProjectRequest(opUrl, postData) {
-            return this.$channel.globeRequest('SaleManagementController', opUrl, postData, 'project')
         }
     }
 }

+ 49 - 175
src/views/signingManagement/contractManagement/index.vue

@@ -38,21 +38,20 @@
           <el-table-column type="index" width="60" />
           <el-table-column label="合同编号" prop="contractNumber" />
           <el-table-column label="网签备案号" prop="recordNumber" />
-          <el-table-column label="买受人" prop="buyerName" />
-          <el-table-column label="房屋" prop="houseName" />
-          <el-table-column label="实测建筑面积(㎡)" prop="" />
-          <el-table-column label="买卖单价(㎡)" prop="" />
-          <el-table-column label="买受人产权份额占比" prop="" />
-          <el-table-column label="付款方式" prop="" />
-          <el-table-column label="应收房款(元)" prop="" />
-          <el-table-column label="应收专项维修资金(元)" prop="" />
-          <el-table-column label="合同状态" prop="contractStatus" />
-          <el-table-column label="签约日期" prop="comment" />
-          <el-table-column label="创建时间" prop="createdAt" />
+          <el-table-column label="买受人" prop="buyerName" width="200" />
+          <el-table-column label="房屋" prop="houseName" width="200" />
+          <el-table-column label="实测建筑面积(㎡)" prop="actualBuildArea" width="110" />
+          <el-table-column label="买卖单价(㎡)" prop="housePrice" />
+          <el-table-column label="买受人产权份额占比" prop="buyerProportion" />
+          <el-table-column label="付款方式" prop="paymentMethod" />
+          <el-table-column label="应收房款(元)" prop="totalPrice" />
+          <el-table-column label="应收专项维修资金(元)" prop="maintenanceFunds" />
+          <el-table-column label="合同状态" prop="contractStatusStr" width="110" />
+          <el-table-column label="签约日期" prop="signingDate" />
           <el-table-column header-align="center" label="操作" width="180">
             <template scope="scope">
-              <el-button size="mini" type="primary" @click="handleEdit(scope.row)">签约</el-button>
-              <el-button size="mini" type="primary" @click="handleEdit(scope.row)">编辑</el-button>
+              <el-button size="mini" type="text" @click="handleSigning(scope.row)">签约</el-button>
+              <el-button size="mini" type="text" @click="handleEdit(scope.row)">编辑</el-button>
               <!--              <el-button size="mini" type="danger" @click="handleDel(scope.row)">删除</el-button>-->
             </template>
           </el-table-column>
@@ -71,114 +70,57 @@
         </div>
       </el-col>
     </el-row>
-    <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" top="50px" width="75%" @open="dlgOpen">
-      <el-form ref="form" :model="form" :rules="rules" style="width: 100%;padding: 5px">
-        <el-row>
-          <el-col style="padding-bottom: 10px">
-            <span class="card_title">基本信息</span>
-            <el-card shadow="always" style="padding: 15px 5px 5px 15px">
-              <el-row>
-                <el-col :span="3" class="col-txt"><span>姓名</span></el-col>
-                <el-col :span="20" class="col-input">
-                  <el-form-item>
-                    <el-input v-model="form.name" />
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="3" class="col-txt"><span>性别</span></el-col>
-                <el-col :span="8" class="col-input">
-                  <el-form-item>
-                    <el-select v-model="form.gender" clearable filterable placeholder="性别" style="width: 100%">
-                      <el-option
-                        v-for="item in dc_data.STU_GENDER"
-                        :key="item.value"
-                        :label="item.label"
-                        :value="item.value"
-                      />
-                    </el-select>
-                  </el-form-item>
-                </el-col>
-                <el-col :span="4" class="col-txt"><span>生日</span></el-col>
-                <el-col :span="8" class="col-input">
-                  <el-form-item>
-                    <el-date-picker
-                      v-model="form.birthday"
-                      placeholder="生日"
-                      style="width: 100%"
-                      type="datetime"
-                      value-format="yyyy-MM-dd HH:mm:ss"
-                    />
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="3" class="col-txt"><span>说明</span></el-col>
-                <el-col :span="20" class="col-input">
-                  <el-form-item>
-                    <el-input v-model="form.comment" :rows="2" type="textarea" />
-                  </el-form-item>
-                </el-col>
-              </el-row>
-            </el-card>
-          </el-col>
-        </el-row>
-      </el-form>
-      <div slot="footer">
-        <el-button @click="dialogVisible = false">取 消</el-button>
-        <el-button type="primary" @click="confirmSubmit()">确 定</el-button>
-      </div>
+
+    <!--合同签约/修改-->
+    <el-dialog
+      :visible.sync="dialogVisible"
+      :close-on-click-modal="false"
+      :close-on-press-escape="false"
+      :title="dialogTitle"
+      width="90%"
+      top="20px"
+      class="statistic_base"
+      :append-to-body="true"
+      :modal-append-to-body="true"
+      custom-class="tagdialog"
+      @close="getData"
+    >
+      <contract-add v-if="dialogVisible" ref="contractAdd" @cancel="cancel" />
     </el-dialog>
+
   </div>
 </template>
 <script>
 import Base from '@/views/base/base'
 import BaseData from '@/views/base/baseData'
+import contractAdd from '@/views/signingManagement/contractManagement/contractAdd.vue'
 
 import Speech from 'speak-tts'
 
 export default {
     name: 'DemoStudent',
+    components: { contractAdd },
     mixins: [Base, BaseData],
     data() {
         return {
             dc_key: ['CONTRACT_STATUS'],
             // 列表相关
             search: {
-                gender: '',
-                name: ''
             },
             AllData: [],
             loading: false,
             // 弹框相关
             dialogVisible: false,
-            dialogTitle: '新增',
-            isAdd: true,
-            form: this.initForm(),
-            rules: {},
-            // 语音播报
-            speech: null
+            dialogTitle: '新增'
         }
     },
     mounted() {
-        this.speechInit()
         this.initDict(this.dc_key).then((res) => {
             this.getData()
         })
     },
     methods: {
-        speechInit: function() {
-            this.speech = new Speech()
-            this.speech.setLanguage('zh-CN')
-            this.speech.init().then(() => {
-                // console.log('语音播报初始化完成')
-            })
-        },
-        speak() {
-            this.speech.speak({ text: '琳琳下午好,今天天气很好!锄禾日当午,汗滴禾下土。谁知盘中餐,粒粒皆辛苦。' }).then(() => {
-                // console.log('播报完成')
-            })
-        },
+
         getData: function() {
             const _this = this
             _this.loading = true
@@ -211,101 +153,33 @@ export default {
             }
             this.handleSearch()
         },
-        initOutData: function() {
-            const _this = this
-            this.OutData = []
-            const title = [' 姓名', ' 性别', ' 生日', ' 说明', ' 创建时间']
-            this.OutData.push(title)
-
-            return this.baseRequest('listAll', this.search).then((res) => {
-                if (res.data) {
-                    res.data.forEach(function(item) {
-                        const jsonMap = _this.getItemJson(item)
-                        const jsonArray = []
-                        jsonArray.push(jsonMap.name)
-                        jsonArray.push(jsonMap.gender)
-                        jsonArray.push(jsonMap.birthday)
-                        jsonArray.push(jsonMap.comment)
-                        jsonArray.push(jsonMap.createdAt)
-
-                        _this.OutData.push(jsonArray)
-                    })
-                }
-            }).catch(() => {
-            })
-        },
         getItemJson: function(item) {
-            item.gender = this.dc_map.STU_GENDER[item.gender]
-            item.birthday = this.$common.transDate(item.birthday, this.$constant.DATE_PATTERN.DATE_TIME_s_h)
-            item.createdAt = this.$common.transDate(item.createdAt, this.$constant.DATE_PATTERN.DATE_TIME_s_h)
+            item.contractStatusStr = this.dc_map.CONTRACT_STATUS[item.contractStatus]
             return item
         },
-        initForm: function() {
-            return {
-                id: '',
-                name: '',
-                gender: '',
-                birthday: '',
-                comment: ''
-            }
-        },
-        confirmOutput() {
-            this.initOutData().then(() => {
-                const OutSize = [{ wch: 15 }, { wch: 15 }, { wch: 15 }, { wch: 15 }, { wch: 15 }]
-                const fileName = 'demoStudent导出 ' + new Date().Format('yyyyMMddhhmm')
-                this.$outputXlsxFile(this.OutData, OutSize, fileName)
+        /**
+         * 签约
+         */
+        handleSigning(val) {
+            this.dialogVisible = true
+            this.dialogTitle = '签约'
+            // 新vue时调用的方法
+            this.$nextTick(() => {
+                this.$refs.contractAdd.initData(val)
             })
         },
-        dlgOpen: function() {
-            const _this = this
-
-            if (_this.form.id !== '') {
-                const postData = {
-                    id: _this.form.id
-                }
-                this.baseRequest('getById', postData).then((res) => {
-                    if (res.data) {
-                        _this.form = Object.assign({}, _this.form, res.data)
-                        _this.form.birthday = _this.$common.transServDate(res.data.birthday)
-                        _this.form.createdAt = _this.$common.transServDate(res.data.createdAt)
-                    }
-                }).catch(() => {
-                })
-            }
-        },
         /* 编辑*/
         handleEdit: function(val) {
-            this.isAdd = false
-            this.form.id = val.id
             this.dialogVisible = true
             this.dialogTitle = '编辑'
-        },
-        /* 新增*/
-        handleAdd: function() {
-            this.form = this.initForm()
-            this.isAdd = true
-            this.dialogVisible = true
-            this.dialogTitle = '新增'
-        },
-        confirmSubmit: function() {
-            const _this = this
-
-            this.$refs.form.validate(valid => {
-                if (valid) {
-                    let soaUrl = 'edit'
-                    const extraData = {}
-                    const postData = Object.assign({}, _this.form, extraData)
-
-                    if (this.isAdd) {
-                        soaUrl = 'add'
-                    }
-                    this.opRecord(postData, soaUrl)
-                } else {
-                    // console.log('error submit!!')
-                    return false
-                }
+            // 新vue时调用的方法
+            this.$nextTick(() => {
+                this.$refs.contractAdd.initData(val)
             })
         },
+        cancel: function() {
+            this.dialogVisible = false
+        },
         baseRequest(opUrl, postData) {
             return this.$channel.globeRequest('ContractManageController', opUrl, postData, 'project')
         }