guarantee.vue 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. <template>
  2. <view class="">
  3. <view class="data-from" v-for="item in insuranceList">
  4. <en-input label="保险公司" type="text" placeholder="请输入保险公司名称" v-model="item.insurance_name"
  5. v-if="verifyKey('insurance_name')"></en-input>
  6. <en-select label="保险类型" placeholder="请选择保险类型" v-model="item.insurance_type"
  7. v-if="verifyKey('insurance_type')" :local-data="insuranceTypeData"></en-select>
  8. <en-input label="年交费额" type="number" v-model="item.year_money"
  9. v-if="verifyKey('year_money')" placeholder="请输入年交费额" rightText="元"></en-input>
  10. <en-radio label="满足缴费情况" v-model="item.is_fees"
  11. v-if="verifyKey('is_fees')" :radio-data="payData"></en-radio>
  12. <en-date label="保单有效期" v-model="item.validity_date"
  13. v-if="verifyKey('validity_date')" item="选择保单有效期"></en-date>
  14. <en-upload label="上传保单相关图片" v-model="insuranceItem.insurance_img"
  15. v-if="verifyKey('insurance_img')" :imageWidth="180"></en-upload>
  16. <en-input label="备注" v-model="item.remark"
  17. v-if="verifyKey('remark')" type="text" placeholder="请输入备注信息" :noBox="true"></en-input>
  18. </view>
  19. <en-blank message="暂无保单信息,快来添加吧!" v-if="insuranceList.length<=0"></en-blank>
  20. <button class="size-26 r-10 button-color house-button m-t30" hover-class="is-hover"
  21. @click="addItem">+添加保单</button>
  22. </view>
  23. </template>
  24. <script>
  25. import enInput from "@/components/en-from/en-input/en-input.vue"
  26. import EnCity from "@/components/en-from/en-city/en-city.vue";
  27. import EnUpload from "@/components/en-from/en-upload/en-upload.vue";
  28. import EnSelect from "@/components/en-from/en-select/en-select.vue";
  29. import {getTaskOptions} from "@/api/task";
  30. import md5 from "js-md5";
  31. import EnDate from "@/components/en-from/en-date/en-date.vue";
  32. import EnBlank from "@/components/en-utils/en-blank/en-blank.vue";
  33. import tools from "@/service/tools";
  34. import {getSn} from "@/api/common";
  35. export default {
  36. name:'property-guarantee',
  37. components: {
  38. EnBlank,
  39. EnDate,
  40. EnSelect,
  41. EnUpload,
  42. EnCity,
  43. enInput
  44. },
  45. props: {
  46. 'showKeys': {
  47. default: []
  48. },
  49. 'value': {
  50. default: {}
  51. },
  52. 'itemKey': {
  53. default: 0
  54. }
  55. },
  56. data() {
  57. return {
  58. payData: [{'id': 1, 'name': '满足'}, {'id': 0, 'name': '未足'}],
  59. insuranceTypeData: [],
  60. insuranceItem: {
  61. 'insurance_name': '',
  62. 'insurance_type': '',
  63. 'year_money': '',
  64. 'is_fees': '1',
  65. 'validity_date': '',
  66. 'insurance_img': [],
  67. 'remark': '',
  68. },
  69. insuranceList: []
  70. }
  71. },
  72. watch: {
  73. 'insuranceList': {
  74. handler() {
  75. this.$emit("input", this.insuranceList);
  76. },
  77. deep: true
  78. },
  79. 'value': {
  80. handler() {
  81. if (this.value) {
  82. this.setValue()
  83. }
  84. },
  85. deep: true
  86. },
  87. },
  88. mounted() {
  89. this.getTaskOptions()
  90. this.setValue()
  91. },
  92. methods: {
  93. addItem() {
  94. tools.showLoading()
  95. getSn().then((res)=>{
  96. if(res.code===1){
  97. this.insuranceList.push({'property_type':3,'property_sn':res.data,'data':this.insuranceItem})
  98. }else {
  99. tools.error('编号生成失败')
  100. }
  101. tools.hideLoading()
  102. })
  103. },
  104. setSendMd5() {
  105. let str = JSON.stringify(this.value)
  106. this.sendMd5 = md5(JSON.stringify(this.insuranceList))
  107. return md5(str)
  108. },
  109. setValue() {
  110. if (this.value) {
  111. let sendMd5 = this.setSendMd5()
  112. if (sendMd5 !== this.sendMd5) {
  113. this.insuranceList = this.value
  114. }
  115. }
  116. },
  117. verifyKey(field) {
  118. return this.showKeys.indexOf(field) >= 0
  119. },
  120. async getTaskOptions() {
  121. const res = await getTaskOptions({'type': 4})
  122. if (res.code === 1) {
  123. res.data.insuranceType.forEach((val) => {
  124. this.insuranceTypeData.push({'text': val.name, 'value': val.value})
  125. })
  126. }
  127. },
  128. delItem() {
  129. uni.showModal({
  130. title: '警告',
  131. content: '是否删除当前保单信息!',
  132. success: (res) => {
  133. if (res.confirm) {
  134. this.$emit('delItem', this.itemKey)
  135. }
  136. }
  137. });
  138. }
  139. }
  140. }
  141. </script>
  142. <style>
  143. .house-button {
  144. height: 70rpx;
  145. line-height: 70rpx;
  146. background: #FFFFFF;
  147. border: 1rpx solid #0FB160;
  148. }
  149. </style>