bulk.vue 5.9 KB

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