company.vue 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  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. export default {
  34. name:'property-company',
  35. components: {
  36. EnBlank,
  37. EnDate,
  38. EnSelect,
  39. EnUpload,
  40. EnCity,
  41. enInput
  42. },
  43. props: {
  44. 'showKeys': {
  45. default: []
  46. },
  47. 'value': {
  48. default: {
  49. }
  50. },
  51. 'itemKey': {
  52. default: 0
  53. }
  54. },
  55. data() {
  56. return {
  57. payData:[{'id':1,'name':'满足'},{'id':0,'name':'未足'}],
  58. insuranceTypeData:[],
  59. insuranceItem: {
  60. 'insurance_name':'',
  61. 'insurance_type':'',
  62. 'year_money':'',
  63. 'is_fees':'1',
  64. 'validity_date':'',
  65. 'insurance_img':[],
  66. 'remark':'',
  67. },
  68. insuranceList:[]
  69. }
  70. },
  71. watch: {
  72. 'insuranceList': {
  73. handler() {
  74. this.$emit("input", this.insuranceList);
  75. },
  76. deep: true
  77. },
  78. 'value': {
  79. handler() {
  80. if (this.value) {
  81. this.setValue()
  82. }
  83. },
  84. deep: true
  85. },
  86. },
  87. mounted() {
  88. this.getTaskOptions()
  89. this.setValue()
  90. },
  91. methods: {
  92. addItem(){
  93. this.insuranceList.push(this.insuranceItem)
  94. },
  95. setSendMd5() {
  96. let str = JSON.stringify(this.value)
  97. this.sendMd5=md5(JSON.stringify(this.insuranceList))
  98. return md5(str)
  99. },
  100. setValue(){
  101. if (this.value) {
  102. let sendMd5 = this.setSendMd5()
  103. if (sendMd5 !== this.sendMd5) {
  104. this.insuranceList=this.value
  105. }
  106. }
  107. },
  108. verifyKey(field) {
  109. return this.showKeys.indexOf(field) >= 0
  110. },
  111. async getTaskOptions() {
  112. const res = await getTaskOptions({'type': 4})
  113. if (res.code === 1) {
  114. res.data.insuranceType.forEach((val) => {
  115. this.insuranceTypeData.push({'text': val.name, 'value': val.value})
  116. })
  117. }
  118. },
  119. delItem(){
  120. uni.showModal({
  121. title: '警告',
  122. content: '是否删除当前保单信息!',
  123. success: (res) => {
  124. if (res.confirm) {
  125. this.$emit('delItem',this.itemKey)
  126. }
  127. }
  128. });
  129. }
  130. }
  131. }
  132. </script>
  133. <style>
  134. .house-button {
  135. height: 70rpx;
  136. line-height: 70rpx;
  137. background: #FFFFFF;
  138. border: 1rpx solid #0FB160;
  139. }
  140. </style>