stepTwo.vue 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. <template>
  2. <el-form ref="form" :model="$parent.formData" :rules="$parent.formRules" label-width="90px">
  3. <div class="formContent-item_title">房屋信息</div>
  4. <el-table :data="$parent.tableArr" style="width: 100%" class="mrbt20">
  5. <el-table-column prop="communityName" label="所属社区"> </el-table-column>
  6. <el-table-column prop="buildingName" label="楼栋"> </el-table-column>
  7. <el-table-column prop="unitName" label="单元"> </el-table-column>
  8. <el-table-column prop="floorNumber" label="楼层"> </el-table-column>
  9. <el-table-column prop="roomNumber" label="房间号"> </el-table-column>
  10. <el-table-column prop="buildingTypeDict" label="房屋类型"> </el-table-column>
  11. <el-table-column prop="buildingArea" label="建筑面积">
  12. <template slot-scope="scope">{{
  13. !!scope.row.buildingArea ? scope.row.buildingArea + '㎡' : '-'
  14. }}</template></el-table-column
  15. >
  16. </el-table>
  17. <div v-for="(item, index) in $parent.idsObj" :key="index">
  18. <el-form-item label="租金规则" :rules="rulesFun('租金规则', item.ruleId)">
  19. <el-select v-model="item.ruleId" placeholder="请选择租金规则" clearable @change="ruleIdChange(index, item.ruleId)">
  20. <el-option v-for="(item, index) in tegyArr" :key="index" :label="item.chargeName" :value="item.id"></el-option>
  21. </el-select>
  22. </el-form-item>
  23. <el-table :data="item.thisArr" style="width: 100%" class="mrbt20">
  24. <el-table-column prop="chargeName" label="费用名称"> </el-table-column>
  25. <el-table-column label="计费方式">
  26. <template slot-scope="scope">
  27. <span v-if="scope.row.chargeMode === 1">固定收费 </span>
  28. <span v-if="scope.row.chargeMode === 2">价格*面积收费</span>
  29. <span v-if="scope.row.chargeMode === 3">阶梯计费 </span>
  30. <span v-if="scope.row.chargeMode === 4">单价*用量</span>
  31. </template>
  32. </el-table-column>
  33. <el-table-column label="单价"> </el-table-column>
  34. <el-table-column label="月租金">
  35. <template slot-scope="scope">
  36. {{ scope.row.chargePrice }}
  37. </template>
  38. </el-table-column>
  39. <el-table-column prop="roomNumber" label="计费周期">
  40. <template slot-scope="scope"> {{ scope.row.chargeCycle || 0 }} 个月 </template>
  41. </el-table-column>
  42. <el-table-column prop="buildingTypeDict" label="滞纳金标准">
  43. <template slot-scope="scope"> 欠费{{ scope.row.arrearsDays }}天后,收{{ scope.row.lateFee || 0 }} ‰滞纳金 </template>
  44. </el-table-column>
  45. <el-table-column prop="buildingArea" label="递增规则">
  46. <template slot-scope="scope">
  47. {{ scope.row.increasingYear }}年后,每年递增 {{ scope.row.increasingPercentage || 0 }} %
  48. </template></el-table-column
  49. >
  50. </el-table>
  51. <el-col :span="13">
  52. <el-form-item label="免租期">
  53. <el-date-picker
  54. v-model="item.timesTwo"
  55. class="timeWidth"
  56. value-format="yyyy-MM"
  57. type="daterange"
  58. range-separator="至"
  59. start-placeholder="开始日期"
  60. end-placeholder="结束日期"
  61. @change="effectiveDateToggle(item, item.timesTwo)"
  62. :editable="false"
  63. ></el-date-picker>
  64. </el-form-item>
  65. </el-col>
  66. <el-col :span="12"
  67. ><el-form-item label="租赁保证金">
  68. <el-input v-model="item.earnestMoney" placeholder="请输入租赁保证金"></el-input> </el-form-item
  69. ></el-col>
  70. <el-col :span="12"
  71. ><el-form-item label="租赁保证金是否抵扣第一期租金:" label-width="220px">
  72. <el-radio v-model="item.enable" :label="1">是</el-radio>
  73. <el-radio v-model="item.enable" :label="2">否</el-radio>
  74. </el-form-item></el-col
  75. >
  76. </div>
  77. </el-form>
  78. </template>
  79. <script>
  80. export default {
  81. data() {
  82. return {
  83. times: [],
  84. tegyArr: [],
  85. formRules: {}
  86. };
  87. },
  88. methods: {
  89. rulesFun(name, val) {
  90. return {
  91. required: true,
  92. message: `${name}不能为空`,
  93. trigger: 'change',
  94. validator(rule, value, cb) {
  95. if (!val) {
  96. cb(new Error());
  97. } else {
  98. cb();
  99. }
  100. }
  101. };
  102. },
  103. effectiveDateToggle(item, val) {
  104. item.freeTime = `${!!val ? val[0] + '###' : ''}${!!val ? val[1] : ''}`;
  105. },
  106. ruleIdChange(index, id) {
  107. this.tegyArr.map((item) => {
  108. if (item.id == id) {
  109. this.$parent.idsObj[index].thisArr = [item];
  110. this.$parent.idsObj[index].chargePrice = item.chargePrice;
  111. this.$parent.idsObj[index].cycle = item.chargeCycle;
  112. this.$parent.idsObj[index].increasingPercentage = item.increasingPercentage;
  113. this.$parent.idsObj[index].increasingYear = item.increasingYear;
  114. }
  115. });
  116. },
  117. getList() {
  118. const { formData, idsObj } = this.$parent;
  119. let arrs = [];
  120. idsObj.map((item) => {
  121. arrs.push({
  122. amount: item.chargePrice,
  123. cycle: item.cycle,
  124. earnestMoney: item.earnestMoney,
  125. enable: item.enable,
  126. endTime: formData.endTime,
  127. takeEffectDate: formData.startTime,
  128. freeTime: item.freeTime,
  129. houseId: item.houseId,
  130. increasingPercentage: item.increasingPercentage,
  131. increasingYear: item.increasingYear
  132. });
  133. });
  134. this.$http
  135. .post('/sc-community/contract/getPlans', arrs)
  136. .then(({ data }) => {
  137. idsObj.map((item) => {
  138. item.contractPlanDtos = data[item.houseId];
  139. // item.chargeCycle = data[item.houseId].cycle
  140. });
  141. console.log(idsObj);
  142. })
  143. .catch(function () {});
  144. },
  145. getTegy() {
  146. this.$http
  147. .get('/sc-charge/scChargeStrategy/page', { pageNum: 1, pageSize: 15, chargeType: 8 })
  148. .then(({ data }) => {
  149. this.tegyArr = data.list;
  150. })
  151. .catch(function () {});
  152. }
  153. },
  154. created() {
  155. this.getTegy();
  156. }
  157. };
  158. </script>
  159. <style lang="scss" scoped>
  160. .formContent-item_title {
  161. clear: both;
  162. }
  163. .mrbt20 {
  164. margin-bottom: 20px;
  165. }
  166. /deep/ .el-date-editor .el-range-separator {
  167. padding: 0;
  168. }
  169. /deep/ .el-form-item__label,
  170. /deep/ .el-input__inner {
  171. font-size: 12px;
  172. }
  173. </style>