index.vue 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. <template>
  2. <div class="volume-container">
  3. <div class="body scroll-view">
  4. <div class="head">
  5. <div class="bg"></div>
  6. <div class="cont">
  7. <div class="logo">
  8. <img :src="SvgLogo" />
  9. </div>
  10. <!-- <h1 v-if="data.topic.name">{{ data.topic.name }}</h1>
  11. <div class="des" v-if="data.topic.memo" v-html="data.topic.memo"></div> -->
  12. <h1 v-if="data.topic.name">尊敬的客户:</h1>
  13. <div class="des" v-if="data.topic.memo">
  14.   感谢您选择铂林眼科。我们非常期待您对本次服务的满意度反馈,这将对提升我们的服务非常重要。
  15. </div>
  16. </div>
  17. </div>
  18. <transition-group name="list" class="volume-content" tag="ul">
  19. <li
  20. v-for="(item, index) in data.result"
  21. :key="index + 1">
  22. <p>
  23. <i :class="{cur: !!item.val && !!item.val.length}" />
  24. <label v-if="item.required">*</label>
  25. <span>{{index + 1}}. </span>
  26. <span>{{ item.title }}</span>
  27. <span v-if="item.type_name">【{{ item.type_name }}】</span>
  28. </p>
  29. <div :class="{'align-right': item.layout_align === 'right'}">
  30. <div class="slider-layout" v-if="item.type === 'slider'">
  31. <div class="val" v-if="item.val">{{ item.val }}</div>
  32. <div class="warn" v-else>拨动滑块选择</div>
  33. <van-slider
  34. v-model="item.sliderVal"
  35. :min="-1"
  36. :max="item.content.length - 1"
  37. @input="item.val = (item.content[item.sliderVal] || {}).title || ''" />
  38. <div class="ruler-layout">
  39. <div class="ruler-item">
  40. <span></span>
  41. </div>
  42. <div class="ruler-item"
  43. v-for="(it, itIndex) in item.content"
  44. :key="itIndex">
  45. <span v-if="!it.sliderHide">
  46. {{ it.title }}
  47. <br v-if="it.memo" />
  48. {{ it.memo || '' }}
  49. </span>
  50. </div>
  51. </div>
  52. </div>
  53. <van-radio-group
  54. v-model="item.val"
  55. :direction="item.layout_inline === 2 ? 'vertical' : 'horizontal'"
  56. v-if="item.type === 'radio'">
  57. <van-radio
  58. :class="{ vertical: item.layout_inline === 2, horizontal: item.layout_inline === 1 }"
  59. :name="it.title"
  60. v-for="(it, itIndex) in item.content"
  61. :key="itIndex">{{ it.title }}</van-radio>
  62. </van-radio-group>
  63. <van-checkbox-group
  64. v-model="item.val"
  65. :direction="item.layout_inline === 2 ? 'vertical' : 'horizontal'"
  66. :max="item.max"
  67. v-if="item.type === 'checkbox'">
  68. <van-checkbox
  69. :class="{ vertical: item.layout_inline === 2, horizontal: item.layout_inline === 1 }"
  70. :name="it.title"
  71. v-for="(it, itIndex) in item.content"
  72. :key="itIndex"
  73. shape="square">{{ it.title }}</van-checkbox>
  74. </van-checkbox-group>
  75. <textarea
  76. v-model="item.val"
  77. :maxlength="item.max || 200" placeholder="请填写"
  78. v-if="item.type === 'textarea'" />
  79. <input v-model="item.val"
  80. :maxlength="item.max || 200"
  81. placeholder="请填写"
  82. v-if="item.type === 'input'" />
  83. </div>
  84. </li>
  85. </transition-group>
  86. <slot name="tel" />
  87. </div>
  88. <div class="footer" v-if="!!data.result.length">
  89. <button class="btn primary"
  90. :disabled="loading.submit || !data.result.length"
  91. @click="$emit('submit')">提交</button>
  92. </div>
  93. <slot />
  94. </div>
  95. </template>
  96. <script>
  97. import SvgLogo from '~/svg/logo.svg'
  98. export default {
  99. props: {
  100. data: {
  101. required: true,
  102. type: Object
  103. },
  104. loading: {
  105. required: true,
  106. type: Object
  107. }
  108. },
  109. data () {
  110. return {
  111. SvgLogo
  112. }
  113. }
  114. }
  115. </script>
  116. <style lang="scss" scoped>
  117. @import './style.scss';
  118. </style>