Browse Source

Merge remote-tracking branch 'origin/master'

zt 8 months ago
parent
commit
00d5e8a128

+ 5 - 5
src/views/customerManagement/intentionalDeposit/addIntentionalDeposit.vue

@@ -12,13 +12,13 @@
             <el-row>
               <el-col :span="3" class="col-txt"><span>*应收定金(元)</span></el-col>
               <el-col :span="9" class="col-input">
-                <el-form-item>
+                <el-form-item prop="receivableMoney">
                   <el-input v-model="form.receivableMoney" />
                 </el-form-item>
               </el-col>
               <el-col :span="3" class="col-txt"><span>*实收金额(元)</span></el-col>
               <el-col :span="9" class="col-input">
-                <el-form-item>
+                <el-form-item prop="receivedAmount">
                   <el-input v-model="form.receivedAmount" />
                 </el-form-item>
               </el-col>
@@ -26,7 +26,7 @@
             <el-row>
               <el-col :span="3" class="col-txt"><span>*收款方式</span></el-col>
               <el-col :span="9" class="col-input">
-                <el-form-item>
+                <el-form-item prop="paymentMethod">
                   <el-select
                     v-model="form.paymentMethod"
                     :popper-append-to-body="false"
@@ -46,9 +46,9 @@
                   </el-select>
                 </el-form-item>
               </el-col>
-              <el-col :span="3" class="col-txt"><span>收款时间</span></el-col>
+              <el-col :span="3" class="col-txt"><span>*收款时间</span></el-col>
               <el-col :span="9" class="col-input">
-                <el-form-item>
+                <el-form-item prop="collectionTime">
                   <el-date-picker
                     v-model="form.collectionTime"
                     popper-class="statistic_base"

+ 1 - 1
src/views/customerManagement/numberManagement/addCustomer.vue

@@ -238,7 +238,7 @@ export default {
                             _this.cancel()
                         } else {
                             _this.$message({
-                                message: res.msg,
+                                message: res.data.msg,
                                 type: 'warning'
                             })
                         }

+ 18 - 9
src/views/customerManagement/numberManagement/index.vue

@@ -24,7 +24,7 @@
       </el-col>
       <el-col :span="24">
         <div style="display: flex;align-items: center">
-          <div style="    white-space: break-spaces;">项目</div>
+          <div style="    white-space: nowrap;">项目</div>
           <div class="listBox">
             <div
               v-for="item in groupOption"
@@ -39,9 +39,9 @@
           </div>
         </div>
       </el-col>
-      <el-col :span="24">
+      <el-col v-if="discOption.length > 0" :span="24">
         <div style="display: flex;align-items: center">
-          <div style="    white-space: break-spaces;">分期</div>
+          <div style="    white-space: nowrap;">分期</div>
           <div class="listBox">
             <div
               v-for="item in discOption"
@@ -59,7 +59,7 @@
         <el-button size="small" class="ch-button" style="float: right; margin-top: 4px" @click="downLoad"><i class="el-icon-menu" />&nbsp;选房通知单</el-button>
         <el-button size="small" class="ch-button-danger" style="float: right; margin-top: 4px;margin-right: 10px;" @click="handleDelete"><i class="el-icon-menu" />&nbsp;删除</el-button>
         <el-button size="small" class="ch-button-export" style="float: right;margin-top: 4px" @click="batchImport()"><i class="el-icon-menu" />&nbsp;批量导入</el-button>
-        <el-button size="small" class="ch-button" style="float: right; margin-right: 10px; margin-top: 4px" @click="handleAdd()"><i class="el-icon-menu" />&nbsp;新增</el-button>
+        <el-button size="small" class="ch-button-add" style="float: right; margin-right: 10px; margin-top: 4px" @click="handleAdd()"><i class="el-icon-menu" />&nbsp;新增</el-button>
         <el-button size="small" class="ch-button" style="float: right; margin-top: 4px" @click="handleSearch()"><i class="el-icon-menu" />&nbsp;查询</el-button>
         <el-button size="small" class="ch-button-warning" style="float: right;margin-top: 4px" @click="handleReset()"><i class="el-icon-menu" />&nbsp;重置</el-button>
       </el-col>
@@ -72,7 +72,8 @@
           :data="AllData"
           stripe
           row-class-name="g_table_row"
-          :header-cell-style="{textAlign: 'center'}"
+          border
+          :header-cell-style="{background:'#f2f2f2'}"
           :cell-style="{ textAlign: 'center' }"
           @selection-change="handleSelectionChange"
         >
@@ -267,8 +268,8 @@ export default {
         }
     },
     mounted() {
-        this.getGroupList()
-        this.getDiscList()
+        this.getGroupList(true)
+        // this.getDiscList()
         this.initDict(this.dc_key).then((res) => {
             this.getData()
         })
@@ -308,6 +309,7 @@ export default {
             }
             this.groupIds = []
             this.discIds = []
+            this.discOption = []
             this.handleSearch()
         },
         handleAdd() {
@@ -431,6 +433,7 @@ export default {
                 this.groupIds.push(i)
             }
             this.search.groupIds = this.groupIds.join(',')
+            this.getDiscList()
         },
         checkedFQBox(i) {
             if (this.discIds.includes(i)) {
@@ -451,7 +454,7 @@ export default {
             this.dialogIntentionalVisible = false
             this.dialogAbandonVisible = false
         },
-        getGroupList() {
+        getGroupList(firstLoad) {
             this.groupOption = []
             this.baseParkRequest('listAll', {}).then(res => {
                 if (res.data) {
@@ -467,12 +470,18 @@ export default {
                         }
                         this.groupOption.push(obj)
                     })
+                    if (firstLoad) {
+                        this.checkedBox(this.groupOption[1].value)
+                    }
                 }
             })
         },
         getDiscList() {
             this.discOption = []
-            this.baseFQRequest('listAll', {}).then(res => {
+            const data = {
+                groupIds: this.search.groupIds
+            }
+            this.baseFQRequest('listAll', data).then(res => {
                 if (res.data) {
                     const idArr = res.data.map(obj => { return obj.id })
                     this.discOption.push({

+ 44 - 24
src/views/customerManagement/roomChose/roomIndex.vue

@@ -99,6 +99,22 @@
               </el-checkbox-group>
             </el-col>
           </el-row>
+          <el-row class="lineheight20">
+            <el-col :span="2">
+              选房状态:
+            </el-col>
+            <el-col :span="22">
+              <el-checkbox-group
+                v-model="chooseStatus"
+              >
+                <el-checkbox
+                  v-for="item in chooseOptions"
+                  :key="item.value"
+                  :label="item.value"
+                >{{ item.label }}</el-checkbox>
+              </el-checkbox-group>
+            </el-col>
+          </el-row>
           <el-row class="lineheight20">
             <el-col :span="4">
               <div style="margin-top: 6px">套内面积(㎡):</div>
@@ -112,28 +128,28 @@
             <el-col :span="4">
               <el-input v-model="queryParam.actualBuildArea" size="small" placeholder="请输入面积" class="ch-input-size" @keyup.enter.native="handleSearch()" />
             </el-col>
-            <el-col :span="4">
-              <div style="margin-top: 6px">选房状态:</div>
-            </el-col>
-            <el-col :span="4">
-              <el-select
-                v-model="queryParam.isChooseStr"
-                placeholder="请选择"
-                size="small"
-                clearable
-                :popper-append-to-body="false"
-                popper-class="statistic_base"
-              >
-                <el-option
-                  v-for="item in chooseOptions"
-                  :key="item.value"
-                  :popper-append-to-body="false"
-                  popper-class="statistic_base"
-                  :label="item.label"
-                  :value="item.value"
-                />
-              </el-select>
-            </el-col>
+<!--            <el-col :span="4">-->
+<!--              <div style="margin-top: 6px">选房状态:</div>-->
+<!--            </el-col>-->
+<!--            <el-col :span="4">-->
+<!--              <el-select-->
+<!--                v-model="queryParam.isChooseStr"-->
+<!--                placeholder="请选择"-->
+<!--                size="small"-->
+<!--                clearable-->
+<!--                :popper-append-to-body="false"-->
+<!--                popper-class="statistic_base"-->
+<!--              >-->
+<!--                <el-option-->
+<!--                  v-for="item in chooseOptions"-->
+<!--                  :key="item.value"-->
+<!--                  :popper-append-to-body="false"-->
+<!--                  popper-class="statistic_base"-->
+<!--                  :label="item.label"-->
+<!--                  :value="item.value"-->
+<!--                />-->
+<!--              </el-select>-->
+<!--            </el-col>-->
           </el-row>
           <el-row class="lineheight20">
             <el-col :span="4">
@@ -177,8 +193,8 @@
               <el-table-column label="选房状态" prop="isChooseStr" />
               <el-table-column label="操作" header-align="center" width="250">
                 <template scope="scope">
-                  <el-button size="mini" type="text" @click="handleEdit(scope.row)">编辑</el-button>
-                  <el-button size="mini" type="text" @click="handleDelete(scope.row)">删除</el-button>
+                  <!--                  <el-button size="mini" type="text" @click="handleEdit(scope.row)">编辑</el-button>-->
+                  <!--                  <el-button size="mini" type="text" @click="handleDelete(scope.row)">删除</el-button>-->
                   <el-button size="mini" type="text" @click="handleView(scope.row)">查看</el-button>
                 </template>
               </el-table-column>
@@ -532,6 +548,7 @@ export default {
             roomUse: [],
             saleStatus: [],
             soldStatus: [],
+            chooseStatus: [],
             decorationSituation: [],
             isView: false,
             fileList: [],
@@ -567,6 +584,7 @@ export default {
             this.roomUse = ['1']
             this.saleStatus = ['1']
             this.soldStatus = ['1']
+            this.chooseStatus = ['0']
             this.queryParam.nodeId = data.nodeId
             this.queryParam.level = data.level
             this.expandedDeptKey = [data.nodeId]
@@ -628,6 +646,7 @@ export default {
             this.roomUse = []
             this.saleStatus = []
             this.soldStatus = []
+            this.chooseStatus = []
             this.decorationSituation = []
             this.getData()
         },
@@ -659,6 +678,7 @@ export default {
             _this.queryParam.roomUse = _this.roomUse.join(',')
             _this.queryParam.saleStatus = _this.saleStatus.join(',')
             _this.queryParam.soldStatus = _this.soldStatus.join(',')
+            _this.queryParam.chooseStatus = _this.chooseStatus.join(',')
             _this.queryParam.decorationSituation = _this.decorationSituation.join(',')
 
             _this.baseRequest('listByModel', _this.queryParam).then((res) => {

+ 12 - 8
src/views/customerManagement/subscribe/addSubscribe.vue

@@ -12,13 +12,13 @@
             <el-row>
               <el-col :span="3" class="col-txt"><span>*应收定金(元)</span></el-col>
               <el-col :span="9" class="col-input">
-                <el-form-item>
+                <el-form-item prop="receivableMoney">
                   <el-input v-model="form.receivableMoney" />
                 </el-form-item>
               </el-col>
               <el-col :span="3" class="col-txt"><span>*实收金额(元)</span></el-col>
               <el-col :span="9" class="col-input">
-                <el-form-item>
+                <el-form-item prop="receivedAmount">
                   <el-input v-model="form.receivedAmount" />
                 </el-form-item>
               </el-col>
@@ -26,7 +26,7 @@
             <el-row>
               <el-col :span="3" class="col-txt"><span>*收款方式</span></el-col>
               <el-col :span="9" class="col-input">
-                <el-form-item>
+                <el-form-item prop="paymentMethod">
                   <el-select
                     v-model="form.paymentMethod"
                     :popper-append-to-body="false"
@@ -46,9 +46,9 @@
                   </el-select>
                 </el-form-item>
               </el-col>
-              <el-col :span="3" class="col-txt"><span>收款时间</span></el-col>
+              <el-col :span="3" class="col-txt"><span>*收款时间</span></el-col>
               <el-col :span="9" class="col-input">
-                <el-form-item>
+                <el-form-item prop="collectionTime">
                   <el-date-picker
                     v-model="form.collectionTime"
                     popper-class="statistic_base"
@@ -98,7 +98,7 @@
     </el-form>
     <div style="text-align: right">
       <el-button @click="cancel">取 消</el-button>
-      <el-button type="primary" @click="confirmSubmit()">提 交</el-button>
+      <el-button v-if="!isView" type="primary" @click="confirmSubmit()">提 交</el-button>
     </div>
 
   </div>
@@ -127,7 +127,8 @@ export default {
             },
             addLoading: false,
             serialNumber: '',
-            fileList: []
+            fileList: [],
+            isView: false
         }
     },
     mounted() {
@@ -136,6 +137,7 @@ export default {
     methods: {
         initData(data) {
             this.form = data
+            this.isView = data.isView
             this.initDict(this.dc_key).then(res => {
                 if (data.statusStr === '未收取') {
                     this.getSerialNumber(data)
@@ -152,7 +154,9 @@ export default {
             this.baseRequest('getById', { id: val }).then(res => {
                 this.form = res.data
                 this.serialNumber = this.form.serialNumber
-                this.form.paymentMethod = this.form.paymentMethod + ''
+                if (this.form.paymentMethod) {
+                    this.form.paymentMethod = this.form.paymentMethod + ''
+                }
                 if (this.form.fileList) {
                     this.fileList = JSON.parse(this.form.fileList)
                 }

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

@@ -120,6 +120,7 @@ export default {
         },
         handleAdd(val) {
             this.dialogAddVisible = true
+            val.isView = false
             // 新vue时调用的方法
             this.$nextTick(() => {
                 this.$refs.addSubscribe.initData(val)
@@ -127,6 +128,7 @@ export default {
         },
         handleEdit(val) {
             this.dialogAddVisible = true
+            val.isView = false
             // 新vue时调用的方法
             this.$nextTick(() => {
                 this.$refs.addSubscribe.initData(val)

+ 26 - 26
src/views/parkAssets/parkFloorDisc/index.vue

@@ -413,37 +413,37 @@
                 </el-col>
               </el-row>
               <el-row>
-                <el-col :span="4" class="col-txt"><span>共持比例</span></el-col>
+                <el-col :span="4" class="col-txt"><span>共持比例(%)</span></el-col>
                 <el-col :span="20" class="col-input">
                   <el-form-item>
                     <el-input v-model="formLP.proportion" oninput="value=value.replace(/[^\d.]/g,'')" />
                   </el-form-item>
                 </el-col>
               </el-row>
-              <el-row>
-                <el-col :span="4" class="col-txt"><span>支付方式</span></el-col>
-                <el-col :span="20" class="col-input">
-                  <el-form-item>
-                    <el-select
-                      v-model="formLP.paymentMethods"
-                      placeholder=""
-                      filterable
-                      clearable
-                      :popper-append-to-body="false"
-                      popper-class="statistic_base"
-                    >
-                      <el-option
-                        v-for="item in dc_data.PAYMENT_METHODS"
-                        :key="item.id"
-                        :label="item.label"
-                        :value="item.value"
-                        :popper-append-to-body="false"
-                        popper-class="statistic_base"
-                      />
-                    </el-select>
-                  </el-form-item>
-                </el-col>
-              </el-row>
+<!--              <el-row>-->
+<!--                <el-col :span="4" class="col-txt"><span>支付方式</span></el-col>-->
+<!--                <el-col :span="20" class="col-input">-->
+<!--                  <el-form-item>-->
+<!--                    <el-select-->
+<!--                      v-model="formLP.paymentMethods"-->
+<!--                      placeholder=""-->
+<!--                      filterable-->
+<!--                      clearable-->
+<!--                      :popper-append-to-body="false"-->
+<!--                      popper-class="statistic_base"-->
+<!--                    >-->
+<!--                      <el-option-->
+<!--                        v-for="item in dc_data.PAYMENT_METHODS"-->
+<!--                        :key="item.id"-->
+<!--                        :label="item.label"-->
+<!--                        :value="item.value"-->
+<!--                        :popper-append-to-body="false"-->
+<!--                        popper-class="statistic_base"-->
+<!--                      />-->
+<!--                    </el-select>-->
+<!--                  </el-form-item>-->
+<!--                </el-col>-->
+<!--              </el-row>-->
               <el-row>
                 <el-col :span="4" class="col-txt"><span>户型库</span></el-col>
               </el-row>
@@ -715,7 +715,7 @@ export default {
         handleAddFQ: function() {
             this.formLP = this.getBaseForm()
             this.dialogFQVisible = true
-            this.dialogTitle = '新增楼盘'
+            this.dialogTitle = '新增分期'
         },
 
         confirmSubmit: function() {

+ 22 - 22
src/views/parkAssets/parkRoom/index.vue

@@ -128,7 +128,7 @@
               <el-button size="small" class="ch-button-export" style="float: right; margin-top: 4px" @click="handleExcel"><i class="el-icon-menu" />&nbsp;导出EXCEL</el-button>
               <el-button size="small" class="ch-button-export" style="float: right;margin-top: 4px" @click="batchImport()"><i class="el-icon-menu" />&nbsp;批量导入</el-button>
 
-              <el-button size="small" class="ch-button" style="float: right;  margin-right: 10px; margin-top: 4px" @click="handleAdd()"><i class="el-icon-menu" />&nbsp;新增房间</el-button>
+              <el-button size="small" class="ch-button-add" style="float: right;  margin-right: 10px; margin-top: 4px" @click="handleAdd()"><i class="el-icon-menu" />&nbsp;新增房间</el-button>
               <el-button size="small" class="ch-button" style="float: right;margin-top: 4px" @click="handleSearch()"><i class="el-icon-menu" />&nbsp;查询</el-button>
               <el-button size="small" class="ch-button-warning" style="float: right;margin-top: 4px" @click="handleReset()"><i class="el-icon-menu" />&nbsp;重置</el-button>
             </el-col>
@@ -157,7 +157,7 @@
               <el-table-column label="操作" header-align="center" width="250">
                 <template scope="scope">
                   <el-button size="mini" type="text" @click="handleEdit(scope.row)">编辑</el-button>
-                  <el-button size="mini" type="text" @click="handleDelete(scope.row)">删除</el-button>
+                  <el-button :disabled="scope.row.soldStatus!=1" size="mini" type="text" @click="handleDelete(scope.row)">删除</el-button>
                   <el-button size="mini" type="text" @click="handleView(scope.row)">查看</el-button>
                 </template>
               </el-table-column>
@@ -228,30 +228,30 @@
                 </el-col>
               </el-row>
               <el-row>
-                <el-col :span="3" class="col-txt"><span>*预测套内面积(㎡)</span></el-col>
+                <el-col :span="3" class="col-txt"><span>预测套内面积(㎡)</span></el-col>
                 <el-col :span="9" class="col-input">
-                  <el-form-item prop="predictionInternalArea">
+                  <el-form-item>
                     <el-input v-model="houseForm.predictionInternalArea" :disabled="isView" type="number" />
                   </el-form-item>
                 </el-col>
 
-                <el-col :span="3" class="col-txt"><span>*预测分摊面积(㎡)</span></el-col>
+                <el-col :span="3" class="col-txt"><span>预测分摊面积(㎡)</span></el-col>
                 <el-col :span="9" class="col-input">
-                  <el-form-item prop="predictionShareArea">
+                  <el-form-item>
                     <el-input v-model="houseForm.predictionShareArea" :disabled="isView" type="number" />
                   </el-form-item>
                 </el-col>
               </el-row>
               <el-row>
-                <el-col :span="3" class="col-txt"><span>*预测建筑面积(㎡)</span></el-col>
+                <el-col :span="3" class="col-txt"><span>预测建筑面积(㎡)</span></el-col>
                 <el-col :span="9" class="col-input">
-                  <el-form-item prop="predictionBuildArea">
+                  <el-form-item>
                     <el-input v-model="houseForm.predictionBuildArea" :disabled="isView" type="number" />
                   </el-form-item>
                 </el-col>
-                <el-col :span="3" class="col-txt"><span>*预测土地面积(㎡)</span></el-col>
+                <el-col :span="3" class="col-txt"><span>预测土地面积(㎡)</span></el-col>
                 <el-col :span="9" class="col-input">
-                  <el-form-item prop="predictionLandArea">
+                  <el-form-item>
                     <el-input v-model="houseForm.predictionLandArea" :disabled="isView" type="number" />
                   </el-form-item>
                 </el-col>
@@ -277,9 +277,9 @@
                     <el-input v-model="houseForm.actualBuildArea" :disabled="isView" type="number" />
                   </el-form-item>
                 </el-col>
-                <el-col :span="3" class="col-txt"><span>*实测土地面积(㎡)</span></el-col>
+                <el-col :span="3" class="col-txt"><span>实测土地面积(㎡)</span></el-col>
                 <el-col :span="9" class="col-input">
-                  <el-form-item prop="actualLandArea">
+                  <el-form-item>
                     <el-input v-model="houseForm.actualLandArea" :disabled="isView" type="number" />
                   </el-form-item>
                 </el-col>
@@ -308,9 +308,9 @@
                     </el-select>
                   </el-form-item>
                 </el-col>
-                <el-col :span="3" class="col-txt"><span>*户编号</span></el-col>
+                <el-col :span="3" class="col-txt"><span>户编号</span></el-col>
                 <el-col :span="9" class="col-input">
-                  <el-form-item prop="roomNumber">
+                  <el-form-item>
                     <el-input v-model="houseForm.roomNumber" :disabled="isView" />
                   </el-form-item>
                 </el-col>
@@ -501,16 +501,16 @@ export default {
                 findids: [{ required: true, trigger: 'blur', message: '请选择父级' }],
                 roomNo: [{ required: true, trigger: 'blur', message: '请输入户室号' }],
                 floor: [{ required: true, trigger: 'blur', message: '请输入所在层' }],
-                predictionInternalArea: [{ required: true, trigger: 'blur', message: '请输入预测套内面积' }],
-                predictionShareArea: [{ required: true, trigger: 'blur', message: '请输入预测分摊面积' }],
-                predictionBuildArea: [{ required: true, trigger: 'blur', message: '请输入预测建筑面积' }],
-                predictionLandArea: [{ required: true, trigger: 'blur', message: '请输入预测土地面积' }],
-                actualInternalArea: [{ required: true, trigger: 'blur', message: '请输入实测分摊面积' }],
+                // predictionInternalArea: [{ required: true, trigger: 'blur', message: '请输入预测套内面积' }],
+                // predictionShareArea: [{ required: true, trigger: 'blur', message: '请输入预测分摊面积' }],
+                // predictionBuildArea: [{ required: true, trigger: 'blur', message: '请输入预测建筑面积' }],
+                // predictionLandArea: [{ required: true, trigger: 'blur', message: '请输入预测土地面积' }],
+                actualInternalArea: [{ required: true, trigger: 'blur', message: '请输入实测套内面积' }],
                 actualShareArea: [{ required: true, trigger: 'blur', message: '请输入实测分摊面积' }],
                 actualBuildArea: [{ required: true, trigger: 'blur', message: '请输入实测建筑面积' }],
-                actualLandArea: [{ required: true, trigger: 'blur', message: '请输入实测土地面积' }],
-                roomUse: [{ required: true, trigger: 'blur', message: '请输入用途' }],
-                roomNumber: [{ required: true, trigger: 'blur', message: '请输入户编号' }]
+                // actualLandArea: [{ required: true, trigger: 'blur', message: '请输入实测土地面积' }],
+                roomUse: [{ required: true, trigger: 'blur', message: '请输入用途' }]
+                // roomNumber: [{ required: true, trigger: 'blur', message: '请输入户编号' }]
             },
 
             roomId: '',

+ 27 - 6
src/views/receiveRefundsManagement/depositManagement/index.vue

@@ -18,7 +18,6 @@
           v-loading="loading"
           :data="AllData"
           row-class-name="g_table_row"
-          stripe
           border
           :header-cell-style="{background:'#f2f2f2'}"
         >
@@ -70,16 +69,34 @@
       <to-deposit v-if="dialogVisible" ref="toDeposit" @cancel="cancel" />
     </el-dialog>
 
+    <!--定金查看-->
+    <el-dialog
+      :visible.sync="dialogAddVisible"
+      :close-on-click-modal="false"
+      :close-on-press-escape="false"
+      title=""
+      width="90%"
+      top="20px"
+      class="statistic_base"
+      :append-to-body="true"
+      :modal-append-to-body="true"
+      custom-class="tagdialog"
+      @close="getData"
+    >
+      <add-subscribe v-if="dialogAddVisible" ref="addSubscribe" @cancel="cancel" />
+    </el-dialog>
+
   </div>
 </template>
 <script>
 import Base from '@/views/base/base'
 import BaseData from '@/views/base/baseData'
 import ToDeposit from '@/views/receiveRefundsManagement/intentionalDepositManagement/toDeposit.vue'
+import AddSubscribe from '@/views/customerManagement/subscribe/addSubscribe.vue'
 
 export default {
     name: 'Index',
-    components: { ToDeposit },
+    components: { AddSubscribe, ToDeposit },
     mixins: [Base, BaseData],
     data() {
         return {
@@ -91,7 +108,9 @@ export default {
             loading: false,
             // 弹框相关
             dialogVisible: false,
-            dialogTitle: '新增'
+            dialogTitle: '新增',
+            dialogAddVisible: false
+
         }
     },
     mounted() {
@@ -134,7 +153,8 @@ export default {
             this.handleSearch()
         },
         getItemJson: function(item) {
-            item.statusStr = this.dc_map.INTENTIONAL_DEPOSIT_STATUS[item.status]
+            item.houseName = item.buildName + '-' + item.roomNo
+            item.statusStr = this.dc_map.DEPOSIT_STATUS[item.status]
             return item
         },
         /* 编辑*/
@@ -147,12 +167,12 @@ export default {
             })
         },
         handleView(val) {
-            this.dialogVisible = true
+            this.dialogAddVisible = true
             this.dialogTitle = '查看'
             val.isView = true
             // 新vue时调用的方法
             this.$nextTick(() => {
-                this.$refs.toDeposit.initData(val)
+                this.$refs.addSubscribe.initData(val)
             })
         },
         downLoad(val) {
@@ -160,6 +180,7 @@ export default {
         },
         cancel: function() {
             this.dialogVisible = false
+            this.dialogAddVisible = false
         },
         baseRequest(opUrl, postData) {
             return this.$channel.globeRequest('RoomSelectionInfoController', opUrl, postData, '')

+ 0 - 1
src/views/receiveRefundsManagement/intentionalDepositManagement/index.vue

@@ -18,7 +18,6 @@
           v-loading="loading"
           :data="AllData"
           row-class-name="g_table_row"
-          stripe
           border
           :header-cell-style="{background:'#f2f2f2'}"
         >

+ 8 - 2
src/views/receiveRefundsManagement/maintenanceFundsManagement/index.vue

@@ -52,7 +52,13 @@
     </el-row>
     <el-row class="handle-box">
       <el-col :span="24">
-        <el-table v-loading="loading" :data="AllData" row-class-name="g_table_row" stripe>
+        <el-table
+          v-loading="loading"
+          :data="AllData"
+          row-class-name="g_table_row"
+          border
+          :header-cell-style="{background:'#f2f2f2'}"
+        >
           <el-table-column type="index" width="60" />
           <el-table-column label="合同编号" prop="contractNumber" />
           <el-table-column label="买受人" prop="buyerName" width="200" />
@@ -117,7 +123,7 @@ import BaseData from '@/views/base/baseData'
 import AddFunds from '@/views/receiveRefundsManagement/maintenanceFundsManagement/addFunds.vue'
 
 export default {
-    name: 'ContractIndex',
+    name: 'MaintenanceFundsManagementIndex',
     components: { AddFunds },
     mixins: [Base, BaseData],
     data() {

+ 314 - 0
src/views/receiveRefundsManagement/paymentManagement/addPayment.vue

@@ -0,0 +1,314 @@
+<template>
+  <div>
+    <el-form ref="form" v-loading="addLoading" :model="form" style="width: 100%;padding: 5px" :rules="rules">
+      <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="9" class="col-input">
+                <el-form-item>
+                  <el-select
+                    v-model="form.contentType"
+                    clearable
+                    filterable
+                    :popper-append-to-body="false"
+                    popper-class="statistic_base"
+                  >
+                    <el-option
+                      v-for="item in dc_data.CONTENT_TYPE"
+                      :key="item.value"
+                      :label="item.label"
+                      :value="item.value"
+                      :popper-append-to-body="false"
+                      popper-class="statistic_base"
+                    />
+                  </el-select>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="3" class="col-txt"><span>支付方式</span></el-col>
+              <el-col :span="9" class="col-input">
+                <el-form-item>
+                  <el-select
+                    v-model="form.paymentMethod"
+                    clearable
+                    filterable
+                    :popper-append-to-body="false"
+                    popper-class="statistic_base"
+                  >
+                    <el-option
+                      v-for="item in dc_data.PAYMENT_METHODS"
+                      :key="item.value"
+                      :label="item.label"
+                      :value="item.value"
+                      :popper-append-to-body="false"
+                      popper-class="statistic_base"
+                    />
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="3" class="col-txt"><span>到账日期</span></el-col>
+              <el-col :span="9" class="col-input">
+                <el-form-item>
+                  <el-date-picker
+                    v-model="form.payTime"
+                    popper-class="statistic_base"
+                    type="date"
+                    placeholder="年月日"
+                    value-format="yyyy-MM-dd"
+                  />
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="3" class="col-txt"><span>到账银行账号</span></el-col>
+              <el-col :span="9" class="col-input">
+                <el-form-item>
+                  <el-select
+                    v-model="bankObject"
+                    :popper-append-to-body="false"
+                    popper-class="statistic_base"
+                    placeholder=""
+                    filterable
+                    clearable
+                    @change="bankChange"
+                  >
+                    <el-option
+                      v-for="item in bankOptions"
+                      :key="item.value"
+                      popper-class="statistic_base"
+                      :popper-append-to-body="false"
+                      :label="item.bankName + (item.bankBranchName?item.bankBranchName:'') + item.bankNumber"
+                      :value="item"
+                    />
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="3" class="col-txt"><span>到账金额</span></el-col>
+              <el-col :span="9" class="col-input">
+                <el-form-item>
+                  <el-input v-model="form.payMoney" />
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="3" class="col-txt"><span>备注</span></el-col>
+              <el-col :span="21" class="col-input">
+                <el-form-item>
+                  <el-input v-model="form.remark" type="textarea" :autosize="{ minRows: 2, maxRows: 100}" placeholder="请输入内容" />
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="3" class="col-txt"><span>缴费凭证</span></el-col>
+              <el-col :span="15" 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="fileList"
+                  >
+                    <el-button v-if="!isView" size="small" type="primary">点击上传</el-button>
+                    <div slot="file" slot-scope="{file}" style="overflow:hidden;white-space: nowrap;text-overflow:ellipsis">
+                      <el-tooltip class="item" effect="dark" :content="file.name" placement="top-start">
+                        <a :href="file.url">{{ file.name }}</a>
+                      </el-tooltip>
+                      <span class="el-upload-list__item-actions">
+                        <i class="el-icon-delete" @click="handlePictureRemove(file,fileList)" />
+                      </span>
+                    </div>
+                  </el-upload>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="3" class="col-txt"><span>经办时间</span></el-col>
+              <el-col :span="3" class="col-input"><span>{{ dateStr }}</span></el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="3" class="col-txt"><span>经办人</span></el-col>
+              <el-col :span="3" class="col-input"><span>{{ username }}</span></el-col>
+            </el-row>
+          </el-card>
+        </el-col>
+      </el-row>
+    </el-form>
+    <div style="text-align: right">
+      <el-button @click="cancel">取 消</el-button>
+      <el-button v-if="!isView" type="primary" @click="confirmSubmit()">提 交</el-button>
+    </div>
+
+  </div>
+</template>
+
+<script>
+import Base from '@/views/base/base'
+import BaseData from '@/views/base/baseData'
+import { upload } from '@/static/utils/channel'
+
+export default {
+    name: 'AddPayment',
+    components: { },
+    mixins: [Base, BaseData],
+    data() {
+        return {
+            dc_key: ['CONTENT_TYPE', 'PAYMENT_METHODS'],
+            form: {
+
+            },
+            rules: {
+
+            },
+            AllData: [],
+            loading: false,
+            addLoading: false,
+            bankOptions: [],
+            bankObject: '',
+            dateStr: '',
+            username: '',
+            isView: false,
+            fileList: [],
+            contractId: '',
+            houseId: '',
+            customerManagementId: ''
+        }
+    },
+    mounted() {
+        const myDate = new Date()
+        const dateStr = myDate.getFullYear() + '-' + (myDate.getMonth() + 1) + '-' + myDate.getDate()
+        const username = this.$common.currUser().username
+        this.dateStr = dateStr
+        this.username = username
+    },
+    methods: {
+        initData(data) {
+            this.addLoading = true
+            this.isView = data.isView
+            this.contractId = data.contractId
+            this.houseId = data.houseId
+            this.customerManagementId = data.customerManagementId
+
+            this.getBankOptions()
+            this.initDict(this.dc_key).then(res => {
+                if (data.id) {
+                    this.getById(data)
+                } else {
+                    this.getBankTaxRateByFloor()
+                }
+                this.addLoading = false
+            })
+        },
+        getById(data) {
+            const postData = {
+                id: data.id
+            }
+            this.baseRequest('getById', postData).then(res => {
+                this.form = res.data
+                this.form.contentType = res.data.contentType + ''
+                this.form.paymentMethod = res.data.paymentMethod + ''
+                if (this.form.fileList) {
+                    this.fileList = JSON.parse(this.form.fileList)
+                }
+                if (res.data.createdName) {
+                    this.username = res.data.createdName
+                }
+                if (res.data.createdAt) {
+                    this.dateStr = res.data.createdAt
+                }
+                this.bankObject = res.data.bankName + res.data.bankBranchName + res.data.bankNumber
+            })
+        },
+        confirmSubmit: function() {
+            const _this = this
+            this.$refs.form.validate(valid => {
+                if (valid) {
+                    const soaUrl = 'add'
+                    const extraData = {
+                        fileList: JSON.stringify(_this.fileList),
+                        contractId: this.contractId,
+                        houseId: this.houseId,
+                        customerManagementId: this.customerManagementId,
+                        payType: '1'
+                    }
+                    const postData = Object.assign({}, _this.form, extraData)
+                    this.baseRequest(soaUrl, postData).then(res => {
+                        if (res.data.code === 200) {
+                            _this.$message({
+                                message: '新增成功',
+                                type: 'success'
+                            })
+                            _this.cancel()
+                        } else {
+                            _this.$message({
+                                message: res.msg,
+                                type: 'warning'
+                            })
+                        }
+                    }).catch(err => {
+                        _this.$message({
+                            message: err,
+                            type: 'warning'
+                        })
+                    })
+                } else {
+                    console.log('error submit!!')
+                    return false
+                }
+            })
+        },
+        cancel() {
+            this.$emit('cancel')
+        },
+        // 删除单个行
+        handleDelete(index) {
+            this.AllData.splice(index, 1)
+        },
+        getBankOptions() {
+            this.bankRequest('listAll', {}).then(res => {
+                this.bankOptions = res.data || []
+            })
+        },
+        bankChange(val) {
+            console.log(val)
+            this.form.bankName = val.bankName
+            this.form.bankBranchName = val.bankBranchName
+            this.form.bankNumber = val.bankNumber
+        },
+        getBankTaxRateByFloor() {
+            this.fundRequest('getBankTaxRateByFloor', { contractId: this.contractId }).then(res => {
+                if (res.data) {
+                    this.bankObject = res.data.bankFullName
+                    this.form.bankName = res.data.bankName
+                    this.form.bankBranchName = res.data.bankBranchName
+                    this.form.bankNumber = res.data.bankNumber
+                }
+            })
+        },
+        uploadPhoto: function(param) {
+            upload(param, true).then((res) => {
+                this.fileList.push(res)
+            })
+        },
+        baseRequest(opUrl, postData) {
+            return this.$channel.globeRequest('PayLogController', opUrl, postData, 'project')
+        },
+        bankRequest(opUrl, postData) {
+            return this.$channel.globeRequest('InvoiceBankController', opUrl, postData, 'project')
+        },
+        fundRequest(opUrl, postData) {
+            return this.$channel.globeRequest('MaintenanceFundsManagementController', opUrl, postData, 'project')
+        }
+
+    }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 246 - 0
src/views/receiveRefundsManagement/paymentManagement/index.vue

@@ -0,0 +1,246 @@
+<template>
+  <div>
+    <el-row class="handle-box" style="margin-bottom: 10px">
+      <el-col :span="24">
+        <span>买受人&nbsp;</span>
+        <el-input v-model="search.buyerName" class="ch-input ch-input-size" placeholder="买受人" size="small" @keyup.enter.native="handleSearch()" />
+        <span>房屋&nbsp;</span>
+        <el-input v-model="search.houseName" class="ch-input ch-input-size" placeholder="房屋" size="small" @keyup.enter.native="handleSearch()" />
+        <span>合同状态&nbsp;</span>
+        <el-select
+          v-model="search.status"
+          clearable
+          filterable
+          placeholder="合同状态"
+          :popper-append-to-body="false"
+          popper-class="statistic_base"
+          size="small"
+          @change="handleSearch"
+        >
+          <el-option
+            v-for="item in dc_data.CONTRACT_STATUS"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+            :popper-append-to-body="false"
+            popper-class="statistic_base"
+          />
+        </el-select>
+        <span>签约日期&nbsp;</span>
+        <el-date-picker
+          v-model="search.signingDateFrom"
+          popper-class="statistic_base"
+          type="date"
+          placeholder="年月日"
+          value-format="yyyy-MM-dd"
+        />
+        <span>至&nbsp;</span>
+        <el-date-picker
+          v-model="search.signingDateTo"
+          popper-class="statistic_base"
+          type="date"
+          placeholder="年月日"
+          value-format="yyyy-MM-dd"
+        />
+      </el-col>
+    </el-row>
+    <el-row class="handle-box" style="margin-bottom: 10px">
+      <el-col :span="24" style="margin-top: 20px">
+        <el-button class="ch-button-warning" size="small" style="float: right" @click="handleReset()"><i class="el-icon-search" />&nbsp;重置</el-button>
+        <el-button class="ch-button" size="small" style="float: right" @click="handleSearch()"><i class="el-icon-search" />&nbsp;查询</el-button>
+      </el-col>
+    </el-row>
+    <el-row class="handle-box">
+      <el-col :span="24">
+        <el-table
+          v-loading="loading"
+          :data="AllData"
+          row-class-name="g_table_row"
+          border
+          :header-cell-style="{background:'#f2f2f2'}"
+        >
+          <el-table-column type="index" width="60" />
+          <el-table-column label="合同编号" prop="contractNumber" />
+          <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="receivedMoney" />
+          <el-table-column label="尚欠房款(元)" prop="arrears" />
+          <el-table-column label="收款状态" prop="collectionStatusStr" width="110">
+            <template scope="scope">
+              <span
+                :style="{'color':scope.row.collectionStatusStr==='已退款'?'red':scope.row.collectionStatusStr==='完全收款'?'green':'gray'}"
+              >
+                {{ scope.row.collectionStatusStr }}
+              </span>
+            </template>
+          </el-table-column>
+          <el-table-column header-align="center" label="操作" width="200">
+            <template scope="scope">
+              <el-button :disabled="scope.row.collectionStatus !== 1" size="mini" type="text" @click="handleEdit(scope.row)">预收款登记</el-button>
+              <el-button size="mini" type="text" @click="handleView(scope.row)">查看</el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+        <div class="table-page">
+          <el-pagination
+            :current-page.sync="currentPage"
+            :page-sizes="[10, 20, 50, 100]"
+            :page-size="pageSize"
+            background
+            layout="total, sizes, prev, pager, next, jumper"
+            :total="allpage"
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
+          />
+        </div>
+      </el-col>
+    </el-row>
+
+    <!-- 预收款登记 -->
+    <el-dialog
+      :visible.sync="dialogVisible"
+      :close-on-click-modal="false"
+      :close-on-press-escape="false"
+      title=""
+      width="90%"
+      top="20px"
+      class="statistic_base"
+      :append-to-body="true"
+      :modal-append-to-body="true"
+      custom-class="tagdialog"
+      @close="getData"
+    >
+      <payment-registration v-if="dialogVisible" ref="paymentRegistration" @cancel="cancel" />
+    </el-dialog>
+
+  </div>
+</template>
+<script>
+import Base from '@/views/base/base'
+import BaseData from '@/views/base/baseData'
+import PaymentRegistration from '@/views/receiveRefundsManagement/paymentManagement/paymentRegistration.vue'
+
+export default {
+    name: 'PaymentManagementIndex',
+    components: { PaymentRegistration },
+    mixins: [Base, BaseData],
+    data() {
+        return {
+            dc_key: ['CONTRACT_STATUS', 'HOUSE_PAYMENT_STATUS'],
+            // 列表相关
+            search: {
+            },
+            AllData: [],
+            loading: false,
+            // 弹框相关
+            dialogVisible: false,
+            dialogTitle: '新增'
+        }
+    },
+    mounted() {
+        this.initDict(this.dc_key).then((res) => {
+            this.getData()
+        })
+    },
+    methods: {
+
+        getData: function() {
+            const _this = this
+            _this.loading = true
+            _this.AllData = []
+
+            this.search.pageNum = this.currentPage
+            this.search.pageSize = this.pageSize
+            this.search.payType = 1
+            this.baseRequest('list', this.search).then((res) => {
+                if (res.data.rows) {
+                    res.data.rows.forEach(function(item) {
+                        const json = _this.getItemJson(item)
+                        _this.AllData.push(json)
+                    })
+                    _this.allpage = res.data.total
+                }
+                _this.loading = false
+            }).catch((e) => {
+                // console.log(e)
+            })
+            // this.initOutData()
+        },
+        handleSearch: function() {
+            this.getData()
+        },
+        handleReset: function() {
+            for (const i in this.search) {
+                if (i !== 'pageNum' && i !== 'pageSize') {
+                    this.search[i] = ''
+                }
+            }
+            this.handleSearch()
+        },
+        getItemJson: function(item) {
+            item.collectionStatusStr = this.dc_map.HOUSE_PAYMENT_STATUS[item.collectionStatus]
+            return item
+        },
+        /* 编辑*/
+        handleEdit: function(val) {
+            this.dialogVisible = true
+            val.isView = false
+            // 新vue时调用的方法
+            this.$nextTick(() => {
+                this.$refs.paymentRegistration.initData(val)
+            })
+        },
+        handleView(val) {
+            this.dialogVisible = true
+            val.isView = true
+            // 新vue时调用的方法
+            this.$nextTick(() => {
+                this.$refs.paymentRegistration.initData(val)
+            })
+        },
+        cancel: function() {
+            this.dialogVisible = false
+        },
+        baseRequest(opUrl, postData) {
+            return this.$channel.globeRequest('PayLogController', opUrl, postData, 'project')
+        }
+    }
+}
+</script>
+
+<style scoped>
+  .ch-input .el-input__inner {
+      border-color: #32323A;
+  }
+  .ch-input-size {
+      width: 150px;
+  }
+  .ch-button {
+      border-color: #32323A;
+      background-color: #32323A;
+      color: #fff;
+  }
+  .ch-button-warning {
+      margin-left: 10px;
+      border-color: #E6A23C;
+      background-color: #E6A23C;
+      color: #fff;
+  }
+  .ch-button-export {
+      margin-left: 10px;
+      border-color: #98CC1F;
+      background-color: #98CC1F;
+      color: #fff;
+  }
+  /deep/.el-dialog__header {
+      padding: 10px 20px;
+  }
+  /deep/.el-dialog__body {
+      padding: 10px 20px;
+  }
+</style>

+ 303 - 0
src/views/receiveRefundsManagement/paymentManagement/paymentRegistration.vue

@@ -0,0 +1,303 @@
+<template>
+  <div>
+    <el-form ref="form" :model="form" style="width: 100%;padding: 5px" :rules="rules">
+      <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="9" class="col-input">
+                <el-form-item>
+                  <el-input v-model="form.contractNumber" />
+                </el-form-item>
+              </el-col>
+              <el-col :span="3" class="col-txt"><span>买受人</span></el-col>
+              <el-col :span="9" class="col-input">
+                <el-form-item>
+                  <el-select
+                    v-model="form.buyerName"
+                    :popper-append-to-body="false"
+                    popper-class="statistic_base"
+                    placeholder=""
+                    filterable
+                    clearable
+                  >
+                    <el-option
+                      v-for="item in dc_data.COLLECTION_METHODS"
+                      :key="item.value"
+                      popper-class="statistic_base"
+                      :popper-append-to-body="false"
+                      :label="item.label"
+                      :value="item.value"
+                    />
+                  </el-select>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="3" class="col-txt"><span>房屋</span></el-col>
+              <el-col :span="9" class="col-input">
+                <el-form-item>
+                  <el-input v-model="form.houseName" />
+                </el-form-item>
+              </el-col>
+              <el-col :span="3" class="col-txt"><span>付款方式</span></el-col>
+              <el-col :span="9" class="col-input">
+                <el-form-item>
+                  <el-input v-model="form.paymentMethodStr" />
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="3" class="col-txt"><span>付款截止日</span></el-col>
+              <el-col :span="9" class="col-input">
+                <el-form-item>
+                  <el-date-picker
+                    v-model="form.deadline"
+                    popper-class="statistic_base"
+                    type="date"
+                    placeholder="年月日"
+                    value-format="yyyy-MM-dd"
+                  />
+                </el-form-item>
+              </el-col>
+              <el-col :span="3" class="col-txt"><span>应收房款(元)</span></el-col>
+              <el-col :span="9" class="col-input">
+                <el-form-item>
+                  <el-input v-model="form.receivableMoney" />
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="3" class="col-txt"><span>已收房款(元)</span></el-col>
+              <el-col :span="9" class="col-input">
+                <el-form-item>
+                  <el-input v-model="form.receivedMoney" />
+                </el-form-item>
+              </el-col>
+              <el-col :span="3" class="col-txt"><span>尚欠房款(元)</span></el-col>
+              <el-col :span="9" class="col-input">
+                <el-form-item>
+                  <el-input v-model="form.arrears" />
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </el-card>
+        </el-col>
+      </el-row>
+    </el-form>
+    <el-divider />
+    <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 style="text-align: right">
+            <el-button type="primary" @click="handleAdd">新增</el-button>
+          </el-row>
+          <el-row>
+            <el-col :span="24">
+              <el-table v-loading="loading" :data="AllData" row-class-name="g_table_row" stripe>
+                <el-table-column type="index" width="60" />
+                <el-table-column label="款项内容" prop="contentTypeStr" />
+                <el-table-column label="支付方式" prop="paymentMethodStr" />
+                <el-table-column label="到账日期" prop="payTime" width="200" />
+                <el-table-column label="到账银行账号" prop="bankFullName" width="200" />
+                <el-table-column label="到账金额" prop="payMoney" width="110" />
+                <el-table-column header-align="center" label="操作" width="180">
+                  <template scope="scope">
+                    <el-button size="mini" type="text" @click="handleView(scope.row)">查看</el-button>
+                    <el-button size="mini" type="text" @click="handleDelete(scope.row)">删除</el-button>
+                    <el-button size="mini" type="text" @click="downLoad(scope.row)">电子收据</el-button>
+                  </template>
+                </el-table-column>
+              </el-table>
+            </el-col>
+          </el-row>
+        </el-card>
+      </el-col>
+    </el-row>
+    <div style="text-align: right">
+      <el-button @click="cancel">取 消</el-button>
+      <el-button v-if="!isView" type="primary" @click="cancel">确 定</el-button>
+    </div>
+
+    <!-- 新增收款 -->
+    <el-dialog
+      :visible.sync="dialogVisible"
+      :close-on-click-modal="false"
+      :close-on-press-escape="false"
+      title=""
+      width="90%"
+      top="20px"
+      class="statistic_base"
+      :append-to-body="true"
+      :modal-append-to-body="true"
+      custom-class="tagdialog"
+      @close="getData"
+    >
+      <add-payment v-if="dialogVisible" ref="addPayment" @cancel="addPaymentCancel" />
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+import Base from '@/views/base/base'
+import BaseData from '@/views/base/baseData'
+import AddPayment from '@/views/receiveRefundsManagement/paymentManagement/addPayment.vue'
+
+export default {
+    name: 'PaymentRegistration',
+    components: { AddPayment },
+    mixins: [Base, BaseData],
+    data() {
+        return {
+            dc_key: ['PAYMENT_METHODS', 'COLLECTION_METHODS'],
+            form: {
+
+            },
+            rules: {
+
+            },
+            AllData: [],
+            loading: false,
+            dialogVisible: false,
+            contractId: '',
+            houseId: '',
+            customerManagementId: '',
+            isView: false
+        }
+    },
+    computed: {
+
+    },
+    mounted() {
+
+    },
+    methods: {
+        initData(data) {
+            this.isView = data.isView
+            this.contractId = data.id
+            this.houseId = data.houseId
+            this.customerManagementId = data.customerManagementId
+            this.initDict(this.dc_key).then(res => {
+                this.getData()
+            })
+        },
+        getData() {
+            this.getContractPart()
+            this.getList()
+        },
+        getContractPart() {
+            const _this = this
+            const data = {
+                contractId: this.contractId
+            }
+            this.baseRequest('getContractPart', data).then((res) => {
+                if (res.data) {
+                    _this.form = res.data
+                    _this.form.paymentMethodStr = this.dc_map.PAYMENT_METHODS[res.data.paymentMethod]
+                }
+            }).catch((e) => {
+                // console.log(e)
+            })
+        },
+        getList() {
+            const _this = this
+            _this.AllData = []
+            const data = {
+                contractId: this.contractId,
+                payType: 1
+            }
+            this.baseRequest('payListAll', data).then((res) => {
+                if (res.data) {
+                    res.data.forEach(function(item) {
+                        const json = _this.getItemJson(item)
+                        _this.AllData.push(json)
+                    })
+                    _this.allpage = res.data.total
+                }
+                _this.loading = false
+            }).catch((e) => {
+                // console.log(e)
+            })
+        },
+        getItemJson: function(item) {
+            item.paymentMethodStr = this.dc_map.PAYMENT_METHODS[item.paymentMethod]
+            item.contentTypeStr = this.dc_map.COLLECTION_METHODS[item.contentType]
+            item.bankFullName = item.bankName + item.bankBranchName + item.bankNumber
+            return item
+        },
+        cancel() {
+            this.$emit('cancel')
+        },
+        addPaymentCancel() {
+            this.dialogVisible = false
+        },
+        downLoad() {
+
+        },
+        handleAdd() {
+            this.dialogVisible = true
+            const data = {
+                isView: false,
+                contractId: this.contractId,
+                houseId: this.houseId,
+                customerManagementId: this.customerManagementId
+            }
+            // 新vue时调用的方法
+            this.$nextTick(() => {
+                this.$refs.addPayment.initData(data)
+            })
+        },
+        handleView(data) {
+            this.dialogVisible = true
+            data.isView = true
+            // 新vue时调用的方法
+            this.$nextTick(() => {
+                this.$refs.addPayment.initData(data)
+            })
+        },
+        handleDelete(val) {
+            this.$confirm('确认删除该数据,删除后将无法恢复,确认删除吗?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(() => {
+                this.baseRequest('delete', { id: val.id }).then(res => {
+                    if (res.data.code == 200) {
+                        this.getData()
+                        this.$message({
+                            type: 'success',
+                            message: '删除成功!'
+                        })
+                    } else {
+                        this.$message({
+                            type: 'error',
+                            message: res.data.msg
+                        })
+                    }
+                }).catch((err) => {
+                    this.$message({
+                        type: 'error',
+                        message: err
+                    })
+                })
+            }).catch(() => {
+                this.$message({
+                    type: 'info',
+                    message: '已取消删除'
+                })
+            })
+        },
+        baseRequest(opUrl, postData) {
+            return this.$channel.globeRequest('PayLogController', opUrl, postData, 'project')
+        }
+    }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 541 - 0
src/views/receiveRefundsManagement/refundManagement/addRefund.vue

@@ -0,0 +1,541 @@
+<template>
+  <div>
+    <el-form ref="form" :model="form" style="width: 100%;padding: 5px" :rules="rules">
+      <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="9" class="col-input">
+                <el-form-item prop="approvalNumber">
+                  <el-input v-model="form.approvalNumber" />
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="3" class="col-txt"><span>*申请人</span></el-col>
+              <el-col :span="9" class="col-input">
+                <el-form-item prop="applicant">
+                  <el-input v-model="form.applicant" />
+                </el-form-item>
+              </el-col>
+              <el-col :span="3" class="col-txt"><span>*身份证号</span></el-col>
+              <el-col :span="9" class="col-input">
+                <el-form-item prop="identityCard">
+                  <el-select
+                    v-model="form.identityCard"
+                    :popper-append-to-body="false"
+                    popper-class="statistic_base"
+                    placeholder=""
+                    filterable
+                    clearable
+                    @change="identityCardChange"
+                  >
+                    <el-option
+                      v-for="item in idNumberOption"
+                      :key="item.value"
+                      popper-class="statistic_base"
+                      :popper-append-to-body="false"
+                      :label="item.label"
+                      :value="item.value"
+                    />
+                  </el-select>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="3" class="col-txt"><span>*退房原因</span></el-col>
+              <el-col :span="9" class="col-input">
+                <el-form-item prop="reason">
+                  <el-select
+                    v-model="form.reason"
+                    :popper-append-to-body="false"
+                    popper-class="statistic_base"
+                    placeholder=""
+                    filterable
+                    clearable
+                  >
+                    <el-option
+                      v-for="item in dc_data.CHECK_OUT_REASON"
+                      :key="item.value"
+                      popper-class="statistic_base"
+                      :popper-append-to-body="false"
+                      :label="item.label"
+                      :value="item.value"
+                    />
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="3" class="col-txt"><span>*所退房屋</span></el-col>
+              <el-col :span="9" class="col-input">
+                <el-form-item prop="houseId">
+                  <el-select
+                    v-model="form.houseId"
+                    :popper-append-to-body="false"
+                    popper-class="statistic_base"
+                    placeholder=""
+                    filterable
+                    clearable
+                    @change="houseChange"
+                  >
+                    <el-option
+                      v-for="item in houseOption"
+                      :key="item.value"
+                      popper-class="statistic_base"
+                      :popper-append-to-body="false"
+                      :label="item.label"
+                      :value="item.value"
+                    />
+                  </el-select>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="3" class="col-txt"><span>*买受人</span></el-col>
+              <el-col :span="21" class="col-input">
+                <el-form-item prop="buyerName">
+                  <el-input v-model="form.buyerName" />
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row class="handle-box">
+              <el-col :span="24">
+                <span>
+                  该房屋及买受人关联的款项如下,请选择需要退款的款项:
+                </span>
+              </el-col>
+            </el-row>
+            <el-row class="handle-box">
+              <el-col :span="24">
+                <el-table
+                  ref="eltable"
+                  v-loading="loading"
+                  :data="AllData"
+                  row-class-name="g_table_row"
+                  stripe
+                  border
+                  @selection-change="handleSelectionChange"
+                >
+                  <el-table-column type="selection" width="55" :selectable="selectEnable" />
+                  <el-table-column type="index" width="60" label="序号" />
+                  <el-table-column label="款项" prop="type" />
+                  <el-table-column label="已收(元)" prop="receivedAmount" width="200" />
+                  <el-table-column label="扣除" prop="deductible">
+                    <template slot-scope="scope">
+                      <el-form-item :prop="`${scope.$index}.deductible`">
+                        <el-input
+                          v-model="scope.row.deductible"
+                          type="number"
+                          :disabled="!scope.row.isSelected"
+                          @input="bigorsmall($event,scope.$index)"
+                        />
+                      </el-form-item>
+                    </template>
+                  </el-table-column>
+                  <el-table-column label="实退(元)" prop="actualRefundAmount" />
+                </el-table>
+              </el-col>
+            </el-row>
+            <el-row class="handle-box" style="margin-top: 10px">
+              <el-col :span="3" class="col-txt"><span>*应退金额(元)</span></el-col>
+              <el-col :span="9" class="col-input">
+                <el-form-item prop="refundAmount">
+                  <el-input v-model="form.refundAmount" />
+                </el-form-item>
+              </el-col>
+              <el-col :span="3" class="col-txt"><span>*扣除金额(元)</span></el-col>
+              <el-col :span="9" class="col-input">
+                <el-form-item prop="deductible">
+                  <el-input v-model="form.deductible" />
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row class="handle-box">
+              <el-col :span="3" class="col-txt"><span>*实退金额(元)</span></el-col>
+              <el-col :span="9" class="col-input">
+                <el-form-item prop="actualRefundAmount">
+                  <el-input v-model="form.actualRefundAmount" />
+                </el-form-item>
+              </el-col>
+              <el-col :span="3" class="col-txt"><span>*收款账号</span></el-col>
+              <el-col :span="9" class="col-input">
+                <el-form-item prop="bankNumber">
+                  <el-input v-model="form.bankNumber" />
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="3" class="col-txt"><span>备注</span></el-col>
+              <el-col :span="21" class="col-input">
+                <el-form-item>
+                  <el-input v-model="form.remark" type="textarea" :autosize="{ minRows: 2, maxRows: 100}" placeholder="请输入内容" />
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="3" class="col-txt"><span>缴费凭证</span></el-col>
+              <el-col :span="15" 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="fileList"
+                  >
+                    <el-button v-if="!isView" size="small" type="primary">点击上传</el-button>
+                    <div slot="file" slot-scope="{file}" style="overflow:hidden;white-space: nowrap;text-overflow:ellipsis">
+                      <el-tooltip class="item" effect="dark" :content="file.name" placement="top-start">
+                        <a :href="file.url">{{ file.name }}</a>
+                      </el-tooltip>
+                      <span class="el-upload-list__item-actions">
+                        <i class="el-icon-delete" @click="handlePictureRemove(file,fileList)" />
+                      </span>
+                    </div>
+                  </el-upload>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="3" class="col-txt"><span>经办时间</span></el-col>
+              <el-col :span="3" class="col-input"><span>{{ dateStr }}</span></el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="3" class="col-txt"><span>经办人</span></el-col>
+              <el-col :span="3" class="col-input"><span>{{ username }}</span></el-col>
+            </el-row>
+          </el-card>
+        </el-col>
+      </el-row>
+    </el-form>
+    <div style="text-align: right">
+      <el-button @click="cancel">取 消</el-button>
+      <el-button v-if="!isView" type="primary" @click="confirmSubmit">确 定</el-button>
+    </div>
+
+  </div>
+</template>
+
+<script>
+import Base from '@/views/base/base'
+import BaseData from '@/views/base/baseData'
+import { upload } from '@/static/utils/channel'
+const form = {
+    houseId: null,
+    buyerName: null,
+    refundAmount: null,
+    deductible: null,
+    actualRefundAmount: null
+}
+export default {
+    name: 'PaymentRegistration',
+    components: { },
+    mixins: [Base, BaseData],
+    data() {
+        return {
+            dc_key: ['CHECK_OUT_REASON'],
+            form: { ...form },
+            rules: {
+                approvalNumber: [{ required: true, message: '请输入关联审批单号', trigger: 'blur' }],
+                applicant: [{ required: true, message: '请输入申请人', trigger: 'blur' }],
+                identityCard: [{ required: true, message: '请输入身份证号', trigger: 'blur' }],
+                reason: [{ required: true, message: '请选择退房原因', trigger: 'change' }],
+                houseId: [{ required: true, message: '请选择所退房屋', trigger: 'change' }],
+                buyerName: [{ required: true, message: '请输入买受人', trigger: 'blur' }],
+                refundAmount: [{ required: true, message: '请输入应退金额', trigger: 'blur' }],
+                deductible: [{ required: true, message: '请输入扣除金额', trigger: 'blur' }],
+                actualRefundAmount: [{ required: true, message: '请输入实退金额', trigger: 'blur' }],
+                bankNumber: [{ required: true, message: '请输入收款账号', trigger: 'blur' }]
+            },
+            AllData: [],
+            loading: false,
+            dialogVisible: false,
+            contractId: '',
+            isView: false,
+            houseOption: [],
+            idNumberOption: [],
+            fileList: [],
+            dateStr: '',
+            username: '',
+            paymentOptions: [],
+            url: ''
+        }
+    },
+    computed: {
+
+    },
+    mounted() {
+        const myDate = new Date()
+        const dateStr = myDate.getFullYear() + '-' + (myDate.getMonth() + 1) + '-' + myDate.getDate()
+        const username = this.$common.currUser().username
+        this.dateStr = dateStr
+        this.username = username
+    },
+    methods: {
+        initData(data) {
+            this.url = 'add'
+            this.isView = data.isView
+            // this.contractId = data.contractId
+            this.initDict(this.dc_key).then(res => {
+                this.getIdentityCardList()
+                if (data.id) {
+                    this.url = 'edit'
+                    this.getById(data)
+                }
+            })
+        },
+        getById(data) {
+            const postData = {
+                id: data.id
+            }
+            this.baseRequest('getById', postData).then((res) => {
+                if (res.data) {
+                    this.form = res.data
+                    if (this.form.fileList) {
+                        this.fileList = JSON.parse(this.form.fileList)
+                    }
+                    if (this.form.reason) {
+                        this.form.reason = this.form.reason + ''
+                    }
+                    this.dateStr = this.form.createdAt
+                    this.username = this.form.createdName
+                    this.getHouseList()
+                    this.getPaymentListById()
+                }
+            }).catch((e) => {
+            })
+        },
+        getIdentityCardList() {
+            const _this = this
+            _this.idNumberOption = []
+            this.baseBuyerRequest('numberList').then((res) => {
+                if (res.data) {
+                    res.data.forEach(item => {
+                        const obj = {
+                            label: item,
+                            value: item
+                        }
+                        _this.idNumberOption.push(obj)
+                    })
+                }
+            }).catch((e) => {
+            })
+        },
+        identityCardChange() {
+            const _this = this
+            _this.houseOption = []
+            _this.form.houseId = ''
+            _this.form.contractId = ''
+            _this.form.customerManagementId = ''
+            _this.form.buyerName = ''
+            _this.getHouseList()
+        },
+        getHouseList() {
+            const _this = this
+            const postData = {
+                identityCard: this.form.identityCard
+            }
+            this.baseRequest('getHouseListByIdCard', postData).then((res) => {
+                if (res.data) {
+                    res.data.forEach(item => {
+                        const obj = {
+                            label: item.groupName + '-' + item.discName + '-' + item.buildName + '-' + item.roomNo,
+                            value: item.id,
+                            customerManagementId: item.customerManagementId,
+                            contractId: item.contractId
+                        }
+                        _this.houseOption.push(obj)
+                    })
+                }
+                _this.loading = false
+            }).catch((e) => {
+            })
+        },
+        houseChange(val) {
+            const obj = this.houseOption.find(x => x.value === val)
+            if (obj) {
+                this.form.customerManagementId = obj.customerManagementId
+                this.form.contractId = obj.contractId
+            } else {
+                this.form.customerManagementId = ''
+                this.form.contractId = ''
+            }
+            this.getBuyerName()
+            this.getPaymentList()
+        },
+        getBuyerName() {
+            const postData = {
+                id: this.form.customerManagementId
+            }
+            this.baseCustomerManagementRequest('getById', postData).then((res) => {
+                if (res.data) {
+                    this.form.buyerName = res.data.buyerName
+                }
+            }).catch((e) => {
+            })
+        },
+        getPaymentList() {
+            const _this = this
+            _this.AllData = []
+            _this.loading = true
+            const postData = {
+                customerManagementId: this.form.customerManagementId,
+                houseId: this.form.houseId
+            }
+            this.baseDetailRequest('getByCustomerManagementId', postData).then((res) => {
+                if (res.data) {
+                    res.data.forEach(item => {
+                        const json = _this.getItemJson(item)
+                        _this.AllData.push(json)
+                    })
+                }
+                _this.loading = false
+            }).catch((e) => {
+            })
+        },
+        // 回显
+        getPaymentListById() {
+            const _this = this
+            _this.AllData = []
+            _this.loading = true
+            const postData = {
+                refundManageId: this.form.id
+            }
+            this.baseDetailRequest('listAll', postData).then((res) => {
+                if (res.data) {
+                    res.data.forEach(item => {
+                        const json = _this.getItemJson(item)
+                        _this.AllData.push(json)
+                    })
+                    // 回显
+                    _this.paymentOptions = res.data
+                    _this.paymentOptions.forEach(element => {
+                        this.$nextTick(() => {
+                            this.$refs.eltable.toggleRowSelection(element, true)
+                        })
+                    })
+                }
+                _this.loading = false
+            }).catch((e) => {
+            })
+        },
+        getItemJson: function(item) {
+            item.isSelected = false
+            return item
+        },
+        selectEnable() {
+            if (!this.isView) {
+                // 启用选择
+                return true
+            } else {
+                // 禁用选择
+                return false
+            }
+        },
+        confirmSubmit() {
+            const _this = this
+            this.$refs.form.validate(valid => {
+                if (valid) {
+                    const extraData = {
+                        // 退款详情
+                        refundDetailInfoStr: JSON.stringify(_this.paymentOptions),
+                        fileList: JSON.stringify(_this.fileList)
+                    }
+                    const postData = Object.assign({}, _this.form, extraData)
+                    this.baseRequest(this.url, postData).then(res => {
+                        const data = res.data
+                        if (data.code == 200) {
+                            this.$notify({
+                                title: '处理成功',
+                                type: 'info'
+                            })
+                            this.cancel()
+                        } else {
+                            this.$notify({
+                                title: res.data.msg,
+                                type: 'error'
+                            })
+                        }
+                    }).catch((err) => {
+                        this.$message({
+                            message: err,
+                            type: 'error'
+                        })
+                    })
+                }
+            })
+        },
+        cancel() {
+            this.$emit('cancel')
+        },
+        uploadPhoto: function(param) {
+            upload(param, true).then((res) => {
+                this.fileList.push(res)
+            })
+        },
+        bigorsmall(event, index) {
+            const _this = this
+            if (event.length === 0) {
+                _this.AllData[index].deductible = 0
+            }
+            // 扣除大于收款
+            if (event > this.AllData[index].receivedAmount) {
+                _this.AllData[index].deductible = 0
+                _this.AllData[index].actualRefundAmount = 0
+            } else {
+                const receivedAmount = this.AllData[index].receivedAmount
+                const actualRefundAmount = receivedAmount - event
+                _this.AllData[index].actualRefundAmount = actualRefundAmount
+            }
+            this.$refs.eltable.doLayout()
+            // 计算总扣除金额 总实退金额
+            let totalDeductible = 0
+            let totalActualRefundAmount = 0
+            _this.AllData.forEach((item) => {
+                totalDeductible += Number(item.deductible)
+                totalActualRefundAmount += Number(item.actualRefundAmount)
+            })
+            _this.form.deductible = totalDeductible
+            _this.form.actualRefundAmount = totalActualRefundAmount
+        },
+        handleSelectionChange(val) {
+            const _this = this
+            _this.paymentOptions = []
+            _this.multipleSelection = val
+            _this.paymentOptions = this.multipleSelection
+            const selectedID = val.map((e) => {
+                return e.uuid
+            })
+            // 应退金额
+            let totalReceivedAmount = 0
+            _this.AllData.forEach((item) => {
+                const index = selectedID.findIndex(e => e === item.uuid)
+                item.isSelected = index !== -1
+                if (index !== -1) {
+                    totalReceivedAmount += Number(item.receivedAmount)
+                }
+            })
+            _this.form.refundAmount = totalReceivedAmount
+        },
+        baseRequest(opUrl, postData) {
+            return this.$channel.globeRequest('RefundManageController', opUrl, postData, 'project')
+        },
+        baseCustomerManagementRequest(opUrl, postData) {
+            return this.$channel.globeRequest('CustomerManagementController', opUrl, postData, 'project')
+        },
+        baseBuyerRequest(opUrl, postData) {
+            return this.$channel.globeRequest('BuyerController', opUrl, postData, 'project')
+        },
+        baseDetailRequest(opUrl, postData) {
+            return this.$channel.globeRequest('RefundDetailController', opUrl, postData, 'project')
+        }
+
+    }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 225 - 0
src/views/receiveRefundsManagement/refundManagement/index.vue

@@ -0,0 +1,225 @@
+<template>
+  <div>
+    <el-row class="handle-box" style="margin-bottom: 10px">
+      <el-col :span="24">
+        <span>申请人&nbsp;</span>
+        <el-input v-model="search.applicant" class="ch-input ch-input-size" placeholder="买受人" size="small" @keyup.enter.native="handleSearch()" />
+        <span>房屋&nbsp;</span>
+        <el-input v-model="search.houseName" class="ch-input ch-input-size" placeholder="房屋" size="small" @keyup.enter.native="handleSearch()" />
+        <span>退款日期&nbsp;</span>
+        <el-date-picker
+          v-model="search.refundDateFrom"
+          popper-class="statistic_base"
+          type="date"
+          placeholder="年月日"
+          value-format="yyyy-MM-dd"
+        />
+        <span>至&nbsp;</span>
+        <el-date-picker
+          v-model="search.refundDateTo"
+          popper-class="statistic_base"
+          type="date"
+          placeholder="年月日"
+          value-format="yyyy-MM-dd"
+        />
+      </el-col>
+    </el-row>
+    <el-row class="handle-box" style="margin-bottom: 10px">
+      <el-col :span="24" style="margin-top: 20px">
+        <el-button class="ch-button-warning" size="small" style="float: right" @click="handleReset()"><i class="el-icon-search" />&nbsp;重置</el-button>
+        <el-button class="ch-button" size="small" style="float: right" @click="handleSearch()"><i class="el-icon-search" />&nbsp;查询</el-button>
+        <el-button class="ch-button-add" size="small" style="float: right;" @click="handleAdd()"><i class="el-icon-menu" />&nbsp;新增</el-button>
+      </el-col>
+    </el-row>
+    <el-row class="handle-box">
+      <el-col :span="24">
+        <el-table
+          v-loading="loading"
+          :data="AllData"
+          row-class-name="g_table_row"
+          border
+          :header-cell-style="{background:'#f2f2f2'}"
+        >
+          <el-table-column type="index" width="60" />
+          <el-table-column label="合同编号" prop="contractNumber" />
+          <el-table-column label="申请人" prop="applicant" width="200" />
+          <el-table-column label="买受人" prop="buyerName" width="200" />
+          <el-table-column label="房屋" prop="houseName" width="200" />
+          <el-table-column label="退房原因" prop="reasonStr" width="110" />
+          <el-table-column label="应退(元)" prop="refundAmount" />
+          <el-table-column label="实退(元)" prop="actualRefundAmount" />
+          <el-table-column label="扣除" prop="deductible" />
+          <el-table-column label="关联审批单号" prop="approvalNumber" />
+          <el-table-column header-align="center" label="操作" width="200">
+            <template scope="scope">
+              <el-button size="mini" type="text" @click="handleEdit(scope.row)">编辑</el-button>
+              <el-button size="mini" type="text" @click="handleView(scope.row)">查看</el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+        <div class="table-page">
+          <el-pagination
+            :current-page.sync="currentPage"
+            :page-sizes="[10, 20, 50, 100]"
+            :page-size="pageSize"
+            background
+            layout="total, sizes, prev, pager, next, jumper"
+            :total="allpage"
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
+          />
+        </div>
+      </el-col>
+    </el-row>
+
+    <!-- 预收款登记 -->
+    <el-dialog
+      :visible.sync="dialogVisible"
+      :close-on-click-modal="false"
+      :close-on-press-escape="false"
+      title=""
+      width="90%"
+      top="20px"
+      class="statistic_base"
+      :append-to-body="true"
+      :modal-append-to-body="true"
+      custom-class="tagdialog"
+      @close="getData"
+    >
+      <add-refund v-if="dialogVisible" ref="addRefund" @cancel="cancel" />
+    </el-dialog>
+
+  </div>
+</template>
+<script>
+import Base from '@/views/base/base'
+import BaseData from '@/views/base/baseData'
+import AddRefund from '@/views/receiveRefundsManagement/refundManagement/addRefund.vue'
+
+export default {
+    name: 'RefundManagementIndex',
+    components: { AddRefund },
+    mixins: [Base, BaseData],
+    data() {
+        return {
+            dc_key: ['CHECK_OUT_REASON'],
+            // 列表相关
+            search: {
+            },
+            AllData: [],
+            loading: false,
+            // 弹框相关
+            dialogVisible: false,
+            dialogTitle: '新增'
+        }
+    },
+    mounted() {
+        this.initDict(this.dc_key).then((res) => {
+            this.getData()
+        })
+    },
+    methods: {
+
+        getData: function() {
+            const _this = this
+            _this.loading = true
+            _this.AllData = []
+
+            this.search.pageNum = this.currentPage
+            this.search.pageSize = this.pageSize
+            this.search.payType = 1
+            this.baseRequest('list', this.search).then((res) => {
+                if (res.data.rows) {
+                    res.data.rows.forEach(function(item) {
+                        const json = _this.getItemJson(item)
+                        _this.AllData.push(json)
+                    })
+                    _this.allpage = res.data.total
+                }
+                _this.loading = false
+            }).catch((e) => {
+            })
+        },
+        handleSearch: function() {
+            this.getData()
+        },
+        handleReset: function() {
+            for (const i in this.search) {
+                if (i !== 'pageNum' && i !== 'pageSize') {
+                    this.search[i] = ''
+                }
+            }
+            this.handleSearch()
+        },
+        getItemJson: function(item) {
+            item.reasonStr = this.dc_map.CHECK_OUT_REASON[item.reason]
+            return item
+        },
+        handleAdd: function() {
+            this.dialogVisible = true
+            const val = {
+                isView: false
+            }
+            // 新vue时调用的方法
+            this.$nextTick(() => {
+                this.$refs.addRefund.initData(val)
+            })
+        },
+        /* 编辑*/
+        handleEdit: function(val) {
+            this.dialogVisible = true
+            val.isView = false
+            // 新vue时调用的方法
+            this.$nextTick(() => {
+                this.$refs.addRefund.initData(val)
+            })
+        },
+        handleView(val) {
+            this.dialogVisible = true
+            val.isView = true
+            // 新vue时调用的方法
+            this.$nextTick(() => {
+                this.$refs.addRefund.initData(val)
+            })
+        },
+        cancel: function() {
+            this.dialogVisible = false
+        },
+        baseRequest(opUrl, postData) {
+            return this.$channel.globeRequest('RefundManageController', opUrl, postData, 'project')
+        }
+    }
+}
+</script>
+
+<style scoped>
+  .ch-input .el-input__inner {
+      border-color: #32323A;
+  }
+  .ch-input-size {
+      width: 150px;
+  }
+  .ch-button {
+      border-color: #32323A;
+      background-color: #32323A;
+      color: #fff;
+  }
+  .ch-button-warning {
+      margin-left: 10px;
+      border-color: #E6A23C;
+      background-color: #E6A23C;
+      color: #fff;
+  }
+  .ch-button-export {
+      margin-left: 10px;
+      border-color: #98CC1F;
+      background-color: #98CC1F;
+      color: #fff;
+  }
+  /deep/.el-dialog__header {
+      padding: 10px 20px;
+  }
+  /deep/.el-dialog__body {
+      padding: 10px 20px;
+  }
+</style>

+ 28 - 48
src/views/signingManagement/contractManagement/contractAdd.vue

@@ -13,9 +13,9 @@
               </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="contractNumber">
+                <el-form-item>
                   <el-input v-model="form.contractNumber" />
                 </el-form-item>
               </el-col>
@@ -95,7 +95,7 @@
               </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="actualBuildArea">
                   <el-input v-model="form.actualBuildArea" readonly />
@@ -103,7 +103,7 @@
               </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.actualInternalArea" readonly />
@@ -111,7 +111,7 @@
               </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.actualShareArea" readonly />
@@ -159,7 +159,7 @@
             <el-row>
               <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-input v-model="form.remark" type="textarea" :autosize="{ minRows: 2, maxRows: 100}" maxlength="2000" show-word-limit />
               </el-col>
             </el-row>
             <el-row>
@@ -188,7 +188,7 @@
               <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.buyerProportion" @input="proportionChange" type="number" />
+                  <el-input v-model="form.buyerProportion" type="number" @input="proportionChange" />
                 </el-form-item>
               </el-col>
             </el-row>
@@ -248,20 +248,20 @@
                 </el-form-item>
               </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-date-picker
-                    v-model="form.deadline"
-                    popper-class="statistic_base"
-                    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="18" class="col-input">-->
+            <!--                <el-form-item>-->
+            <!--                  <el-date-picker-->
+            <!--                    v-model="form.deadline"-->
+            <!--                    popper-class="statistic_base"-->
+            <!--                    type="date"-->
+            <!--                    placeholder="年月日"-->
+            <!--                    value-format="yyyy-MM-dd"-->
+            <!--                  />-->
+            <!--                </el-form-item>-->
+            <!--              </el-col>-->
+            <!--            </el-row>-->
             <el-row>
               <el-divider />
             </el-row>
@@ -379,7 +379,7 @@ export default {
                 ]
             },
             rules: {
-                contractNumber: [{ required: true, trigger: 'blur', message: '请输入合同编号' }],
+                // contractNumber: [{ required: true, trigger: 'blur', message: '请输入合同编号' }],
                 actualBuildArea: [{ required: true, trigger: 'blur', message: '实测建筑面积' }]
             },
             contractOriginalList: [],
@@ -462,6 +462,10 @@ export default {
         },
         confirmSubmit: function(type) {
             const _this = this
+            if (!_this.form.recordNumber && !_this.form.contractNumber) {
+                _this.$message.warning('网签备案号/合同编号,必须至少填写其一')
+                return
+            }
             const p1 = new Promise((resolve, reject) => {
                 this.$refs['form'].validate((valid) => {
                     if (valid) resolve()
@@ -548,30 +552,6 @@ export default {
   .ch-input .el-input__inner {
       border-color: #32323A;
   }
-  .ch-input-size {
-      width: 150px;
-  }
-  .ch-button {
-      border-color: #32323A;
-      background-color: #32323A;
-      color: #fff;
-  }
-  .ch-button-warning {
-      margin-left: 10px;
-      border-color: #E6A23C;
-      background-color: #E6A23C;
-      color: #fff;
-  }
-  .ch-button-export {
-      margin-left: 10px;
-      border-color: #98CC1F;
-      background-color: #98CC1F;
-      color: #fff;
-  }
-  /deep/.el-dialog__header {
-      padding: 10px 20px;
-  }
-  /deep/.el-dialog__body {
-      padding: 10px 20px;
-  }
+
+
 </style>

+ 15 - 5
src/views/signingManagement/contractManagement/index.vue

@@ -8,7 +8,7 @@
         <el-input v-model="search.houseName" class="ch-input ch-input-size" placeholder="房屋" size="small" @keyup.enter.native="handleSearch()" />
         <span>合同状态&nbsp;</span>
         <el-select
-          v-model="search.status"
+          v-model="search.contractStatus"
           clearable
           filterable
           placeholder="合同状态"
@@ -52,7 +52,13 @@
     </el-row>
     <el-row class="handle-box">
       <el-col :span="24">
-        <el-table v-loading="loading" :data="AllData" row-class-name="g_table_row" stripe>
+        <el-table
+          v-loading="loading"
+          :data="AllData"
+          row-class-name="g_table_row"
+          border
+          :header-cell-style="{background:'#f2f2f2'}"
+        >
           <el-table-column type="index" width="60" />
           <el-table-column label="合同编号" prop="contractNumber" />
           <el-table-column label="网签备案号" prop="recordNumber" />
@@ -60,8 +66,8 @@
           <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="buyerProportionStr" />
+          <el-table-column label="付款方式" prop="paymentMethodStr" />
           <el-table-column label="应收房款(元)" prop="totalPrice" />
           <el-table-column label="应收专项维修资金(元)" prop="maintenanceFunds" />
           <el-table-column label="合同状态" prop="contractStatusStr" width="110">
@@ -127,7 +133,7 @@ export default {
     mixins: [Base, BaseData],
     data() {
         return {
-            dc_key: ['CONTRACT_STATUS'],
+            dc_key: ['CONTRACT_STATUS', 'PAYMENT_METHODS'],
             // 列表相关
             search: {
             },
@@ -178,6 +184,10 @@ export default {
             this.handleSearch()
         },
         getItemJson: function(item) {
+            if (item.buyerProportion) {
+                item.buyerProportionStr = item.buyerProportion + '%'
+            }
+            item.paymentMethodStr = this.dc_map.PAYMENT_METHODS[item.paymentMethod]
             item.contractStatusStr = this.dc_map.CONTRACT_STATUS[item.contractStatus]
             return item
         },