form-component.html 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <!-- 图片上传 -->
  2. <script type="text/html" id="imageUpload">
  3. <div class="cm image-upload">
  4. <template v-if="files.length > 0">
  5. <div class="image border" v-for="(file,index) in files" :key="files">
  6. <img :src="file.url" :alt="file.name"/>
  7. <span class="remove" @click="removeImage(file,index)">&times;</span>
  8. </div>
  9. </template>
  10. <div class="choose-image border" @click="handleClick" v-if="canChooseImage">
  11. <input type="file" ref="file" @change="handleChooseImage" :multiple="multiple" :accept="accept"/>
  12. <span>{{ placeholder }}</span>
  13. </div>
  14. </div>
  15. </script>
  16. <!-- 单选组件 -->
  17. <script type="text/html" id="radio">
  18. <div class="cm radio" :class="{checked:isChecked}" @click="handleClick">
  19. <slot></slot>
  20. </div>
  21. </script>
  22. <!-- 下拉组件Select -->
  23. <script type="text/html" id="select">
  24. <div class="cm select" @click.stop="optionsVisible = !optionsVisible">
  25. <input type="text" class="cm input border" :placeholder="placeholder" v-model="label"/>
  26. <span class="cm-icon iconfont " :class="optionsVisible ? 'icon-arrow-up' : 'icon-arrow-down'"></span>
  27. <div class="options border radius shadow" v-show="optionsVisible">
  28. <slot></slot>
  29. </div>
  30. </div>
  31. </script>
  32. <!-- 下拉子组件Option -->
  33. <script type="text/html" id="option">
  34. <div class="cm option" @click.stop="handleClick">{{ label }}</div>
  35. </script>
  36. <!-- 文本框组 -->
  37. <script type="text/html" id="inputGroup">
  38. <div class="input-group">
  39. <span class="add-btn" @click.stop="handleAddOnce" v-if="addText">{{ addText }}</span>
  40. <div class="cm form-group" v-for="(item, index) in showList" :key="index">
  41. <input type="text" class="cm input border valid-control" v-model="item[keyMap.key]" :placeholder="getPlaceholder(index).label"/>
  42. <input type="text" class="cm input border valid-control" v-model="item[keyMap.value]" :placeholder="getPlaceholder(index).value"/>
  43. <span class="remove" v-if="showList.length > minLimit" @click.stop="handleRemove(item, index)">&times;</span>
  44. </div>
  45. </div>
  46. </script>
  47. <!--常见问题-->
  48. <script type="text/html" id="questionGroup">
  49. <div class="question-group">
  50. <span class="add-btn" @click.stop="handleAddOnce" v-if="addText">{{ addText }}</span>
  51. <div class="cm form-group" v-for="(item, index) in showList" :key="index">
  52. <div class="question">
  53. <div class="form-label"><em>*</em><span>问题{{ index +1 }}</span></div>
  54. <input type="text" class="cm input max border valid-control hello" v-model="item[keyMap.key]" :placeholder="getPlaceholder(index).label"/>
  55. </div>
  56. <div class="answer">
  57. <div class="form-label"><em>*</em><span>答</span></div>
  58. <textarea type="text" class="cm textarea border max no-resize valid-control" rows="3" v-model="item[keyMap.value]" :placeholder="getPlaceholder(index).value"></textarea>
  59. </div>
  60. <span class="remove" v-if="showList.length > minLimit" @click.stop="handleRemove(item)">&times;</span>
  61. </div>
  62. </div>
  63. </script>