bulk.vue 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. <template>
  2. <div>
  3. <div class="formContent-item_title marginNone">{{ chiData.address }}</div>
  4. <div class="formContent-item_title noneBef">{{ assets }}</div>
  5. <zz-table :settings="{ showIndex: true, stripe: true, hidePagination: true }" :cols="cols" :data="tabList">
  6. <template slot-scope="scope" slot="payBeginTime">
  7. {{ typeTimeTransition(scope.row.payBeginTime, scope.row.payEndTime) }}
  8. </template>
  9. </zz-table>
  10. <el-form ref="form" :model="formData" :rules="formRules" label-width="110px">
  11. <div class="inline">
  12. <el-form-item label="支付方式:" prop="payType">
  13. <el-select placeholder="选择支付方式" v-model="formData.payType">
  14. <el-option label="微信" :value="1"></el-option>
  15. <el-option label="支付宝" :value="2"></el-option>
  16. <el-option label="现金" :value="3"></el-option>
  17. <el-option label="其他" :value="5"></el-option>
  18. </el-select>
  19. </el-form-item>
  20. <el-form-item label="应收金额(元):"> {{ fiterSum(tabList, 'receivableAmount') }}</el-form-item>
  21. <el-form-item label="实收金额(元):" required="true"> {{ fiterSum(tabList, 'receivableAmount') }} </el-form-item>
  22. </div>
  23. <el-form-item label="备注信息:" placeholder="请输入备注信息">
  24. <el-input type="textarea" maxlength="100" show-word-limit resize="none" rows="3" v-model="formData.remark"></el-input>
  25. </el-form-item>
  26. </el-form>
  27. </div>
  28. </template>
  29. <script >
  30. export default {
  31. props: ['params'],
  32. data() {
  33. return {
  34. cols: [
  35. {
  36. label: '订单号',
  37. prop: 'billNumber'
  38. },
  39. {
  40. label: '费用名称',
  41. prop: 'chargeName',
  42. width: '200'
  43. },
  44. {
  45. label: '计费日期',
  46. prop: 'payBeginTime',
  47. slot: 'payBeginTime',
  48. width: '150'
  49. },
  50. {
  51. label: '费用金额(元)',
  52. prop: 'amount'
  53. },
  54. {
  55. label: '滞纳金(元)',
  56. prop: 'lateFee'
  57. },
  58. {
  59. label: '应收金额(元)',
  60. prop: 'receivableAmount'
  61. }
  62. ],
  63. tabList: [],
  64. chiData: {},
  65. formData: {
  66. payType: '',
  67. remark: '',
  68. amount: '',
  69. billList: [
  70. {
  71. amount: '',
  72. billId: ''
  73. }
  74. ]
  75. },
  76. formRules: {
  77. payType: [this.$valid.selectRequired('支付方式')]
  78. }
  79. };
  80. },
  81. methods: {
  82. fiterSum(arr, val) {
  83. let v = null;
  84. arr.forEach((item) => {
  85. v += Number(item[val]);
  86. });
  87. return Math.floor(v * 100) / 100;
  88. // v.toFixed(2)
  89. },
  90. submit() {
  91. this.$refs.form.validate((valid) => {
  92. if (valid) {
  93. let billList = this.tabList.map((item, index) => {
  94. return {
  95. amount: item.amount,
  96. billId: item.id
  97. };
  98. });
  99. let installData = {
  100. payType: this.formData.payType,
  101. remark: this.formData.remark,
  102. billList: billList
  103. };
  104. var loading = this.$loading();
  105. this.$http
  106. .post('/sc-charge/charge/bill/payee', installData)
  107. .then(({ status, msg }) => {
  108. if (status == 0) {
  109. this.$message.success(msg);
  110. this.params.callback();
  111. this.$emit('close');
  112. } else {
  113. this.$message.error(msg);
  114. }
  115. loading.close();
  116. })
  117. .catch(() => {
  118. loading.close();
  119. });
  120. }
  121. });
  122. },
  123. getTable(list) {
  124. let ids = [];
  125. list.map((item) => {
  126. ids.push(item.id);
  127. });
  128. this.$http
  129. .post('/sc-charge/charge/bill/findUserBillDetailList', ids)
  130. .then((res) => {
  131. this.tabList = res;
  132. })
  133. .catch(() => {
  134. loading.close();
  135. });
  136. },
  137. typeTimeTransition(start, end) {
  138. let text = '';
  139. if (!!end) {
  140. let f = start.slice(5, 7),
  141. l = end.slice(5, 7);
  142. if (Number(f) == Number(l)) {
  143. text = start;
  144. } else {
  145. text = `${start.slice(0, 8)}-${end.slice(0, 8)}`;
  146. }
  147. }
  148. return text;
  149. }
  150. },
  151. created() {
  152. if (this.params.selectRow.length) {
  153. this.getTable(this.params.selectRow);
  154. }
  155. this.chiData = this.params.chiData;
  156. }
  157. };
  158. </script>
  159. <style lang="scss" scoped>
  160. .marginNone {
  161. margin-bottom: 0;
  162. }
  163. .zz-table {
  164. margin-bottom: 20px;
  165. }
  166. .noneBef {
  167. margin-top: 5px;
  168. &::before {
  169. content: none;
  170. }
  171. }
  172. .inline {
  173. display: flex;
  174. justify-content: space-between;
  175. }
  176. </style>