renewal.vue 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. <template>
  2. <el-form :model="formData" :rules="ruleForm" ref="form" label-width="85px">
  3. <div class="formContent-item_title">合同信息</div>
  4. <div>
  5. <el-col :span="12">
  6. <el-form-item label="合同编号:"> {{ formData.contractNo }} </el-form-item>
  7. </el-col>
  8. <el-col :span="12">
  9. <el-form-item label="合同时间:">
  10. {{ !!formData.startTime ? this.$moment(new Date(formData.startTime)).format('YYYY-MM-DD') : '-' }} 至
  11. {{ !!formData.endTime ? this.$moment(new Date(formData.endTime)).format('YYYY-MM-DD') : '-' }}
  12. </el-form-item>
  13. </el-col>
  14. <el-form-item label="续期至" prop="endTimes" label-width="75px">
  15. <el-date-picker
  16. v-model="formData.endTimes"
  17. value-format="yyyy-MM-dd"
  18. type="date"
  19. range-separator="至"
  20. placeholder="选择日期"
  21. :editable="false"
  22. ></el-date-picker>
  23. </el-form-item>
  24. </div>
  25. <div class="formContent-item_title blockCl">租金信息</div>
  26. <el-col :span="12">
  27. <el-form-item label="租金规则" label-width="75px" required>
  28. <el-select v-model="formData.ruleId" placeholder="请选择租金规则" disabled>
  29. <el-option v-for="(item, index) in tegyArr" :key="index" :label="item.chargeName" :value="item.id"></el-option>
  30. </el-select>
  31. </el-form-item>
  32. </el-col>
  33. <el-table :data="tableArr" style="width: 100%" class="mrbt20">
  34. <el-table-column prop="chargeName" label="费用名称"> </el-table-column>
  35. <el-table-column label="计费方式" width="100">
  36. <template slot-scope="scope">
  37. <span v-if="scope.row.chargeMode === 1">固定收费 </span>
  38. <span v-if="scope.row.chargeMode === 2">价格*面积收费</span>
  39. <span v-if="scope.row.chargeMode === 3">阶梯计费 </span>
  40. <span v-if="scope.row.chargeMode === 4">单价*用量</span>
  41. </template>
  42. </el-table-column>
  43. <el-table-column label="单价"></el-table-column>
  44. <el-table-column label="月租金">
  45. <template slot-scope="scope">
  46. {{ scope.row.chargePrice }}
  47. </template>
  48. </el-table-column>
  49. <el-table-column prop="roomNumber" label="计费周期">
  50. <template slot-scope="scope"> {{ scope.row.chargeCycle || 0 }} 个月 </template>
  51. </el-table-column>
  52. <el-table-column prop="buildingTypeDict" label="滞纳金标准" width="180">
  53. <template slot-scope="scope"> 欠费{{ scope.row.arrearsDays }}天后,收{{ scope.row.lateFee || 0 }} ‰滞纳金 </template>
  54. </el-table-column>
  55. <el-table-column prop="buildingArea" label="递增规则" width="180">
  56. <template slot-scope="scope">
  57. {{ scope.row.increasingYear }}年后,每年递增 {{ scope.row.increasingPercentage || 0 }} %
  58. </template></el-table-column
  59. >
  60. </el-table>
  61. </el-form>
  62. </template>
  63. <script >
  64. export default {
  65. props: ['params'],
  66. data() {
  67. return {
  68. formData: {
  69. endTimes: '',
  70. ruleId: ''
  71. },
  72. ruleForm: {
  73. endTimes: this.$valid.custome({
  74. validator(rule, value, cb) {
  75. const rl = rule;
  76. if (!value) {
  77. rl.message = '请选择时间';
  78. cb(new Error());
  79. } else {
  80. cb();
  81. }
  82. }
  83. })
  84. },
  85. tableArr: [],
  86. tegyArr: []
  87. };
  88. },
  89. methods: {
  90. submit() {
  91. this.$refs.form.validate((valid) => {
  92. if (valid) {
  93. let installData = { endTime: this.formData.endTimes, id: this.formData.id };
  94. var loading = this.$loading();
  95. this.$http
  96. .post(`/sc-community/contract/leaseRenewal`, installData)
  97. .then(({ status, msg }) => {
  98. if (status == 0) {
  99. this.$message.success(msg);
  100. this.params.callback();
  101. this.$emit('close');
  102. } else {
  103. this.$message.error(msg);
  104. }
  105. loading.close();
  106. })
  107. .catch(() => {
  108. loading.close();
  109. });
  110. }
  111. });
  112. },
  113. findDetali(id, resolve) {
  114. this.$http
  115. .get('/sc-community/contract/find/' + id)
  116. .then(({ data, status, msg }) => {
  117. if (0 === status) {
  118. if (data !== null) {
  119. Object.assign(this.formData, data);
  120. this.formData.endTimes = '';
  121. }
  122. resolve && resolve(data);
  123. } else {
  124. this.$message.error(msg);
  125. }
  126. })
  127. .catch(() => {});
  128. },
  129. getTegy() {
  130. this.$http
  131. .get('/sc-charge/scChargeStrategy/page', { pageNum: 1, pageSize: 15, chargeType: 8 })
  132. .then(({ data }) => {
  133. this.tegyArr = data.list;
  134. })
  135. .catch(function () {});
  136. }
  137. },
  138. created() {
  139. const { row } = this.params;
  140. new Promise((resolve) => {
  141. this.getTegy();
  142. this.findDetali(row.id, resolve);
  143. }).then((data) => {
  144. data.contractHouseVos.map((item, index) => {
  145. this.formData.ruleId = item.ruleId;
  146. });
  147. this.tegyArr.map((item) => {
  148. if (item.id == this.formData.ruleId) {
  149. this.tableArr.push(item);
  150. }
  151. });
  152. });
  153. }
  154. };
  155. </script>
  156. <style lang="scss" scoped>
  157. .blockCl {
  158. clear: both;
  159. }
  160. /deep/ .el-form-item__label,
  161. /deep/ .el-form-item__content,
  162. /deep/ .el-input__inner {
  163. font-size: 12px;
  164. }
  165. .mrbt20 {
  166. margin: 20px 0;
  167. }
  168. /deep/ .el-table th {
  169. background: #f8fcff !important;
  170. }
  171. </style>