leavaFrom.vue 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. <template>
  2. <view>
  3. <uni-forms :rules="rules" ref="baseForm" label-position='top' :modelValue="form">
  4. <uni-forms-item name='name' label="请假类型" required>
  5. <uni-data-select v-model="form.name" :localdata="range" @change="change"></uni-data-select>
  6. </uni-forms-item>
  7. <uni-forms-item name='initiateDate' label="开始时间" required>
  8. <uni-datetime-picker type="datetime" v-model="form.initiateDate" @change="changeLog" />
  9. </uni-forms-item><uni-forms-item label="结束时间" required name="endDate">
  10. <uni-datetime-picker type="datetime" v-model="form.endDate" @change="changeLog" />
  11. </uni-forms-item>
  12. </uni-forms-item><uni-forms-item label="请假事由" required>
  13. <view class="editor-content">
  14. <editor @input="valueChange" id="editor" class="ql-container" placeholder="开始输入..." show-img-size
  15. show-img-toolbar show-img-resize @statuschange="onStatusChange" :read-only="readOnly"
  16. @ready="onEditorReady">
  17. </editor>
  18. <view style="color: #999;display: flex;align-items: center;padding-top: 20rpx;" @click="insertImage"
  19. class="">
  20. 添加照片 <view class="iconfont icon-charutupian"></view>
  21. </view>
  22. </view>
  23. </uni-forms-item>
  24. </uni-forms>
  25. <view @click="submit('baseForm')" class="btn">
  26. 提交
  27. </view>
  28. </view>
  29. </template>
  30. <script>
  31. export default {
  32. name: "leavaFrom",
  33. props: {
  34. form: {
  35. default: () => {},
  36. type: Object
  37. }
  38. },
  39. data() {
  40. return {
  41. readOnly: false,
  42. range: [{
  43. value: 0,
  44. text: "篮球"
  45. },
  46. {
  47. value: 1,
  48. text: "足球"
  49. },
  50. {
  51. value: 2,
  52. text: "游泳"
  53. },
  54. ],
  55. formats: null,
  56. editorCtx: null,
  57. rules: {
  58. name: {
  59. rules: [{
  60. required: true,
  61. errorMessage: '请选择年龄',
  62. }],
  63. },
  64. initiateDate: {
  65. rules: [{
  66. required: true,
  67. errorMessage: '请选择开始时间',
  68. }],
  69. },
  70. endDate: {
  71. rules: [{
  72. required: true,
  73. errorMessage: '请选择结束时间',
  74. }],
  75. },
  76. }
  77. };
  78. },
  79. methods: {
  80. change(e) {
  81. console.log("e:", e);
  82. },
  83. submit(type) {
  84. console.log(this.form);
  85. this.$refs[type].validate().then(res => {
  86. console.log('success', res);
  87. uni.showToast({
  88. title: `校验通过`
  89. })
  90. }).catch(err => {
  91. console.log('err', err);
  92. })
  93. },
  94. changeLog() {
  95. },
  96. valueChange(e) {
  97. },
  98. format(e) {
  99. let {
  100. name,
  101. value
  102. } = e.target.dataset
  103. if (!name) return
  104. this.editorCtx.format(name, value)
  105. },
  106. onEditorReady() {
  107. // #ifdef MP-BAIDU
  108. this.editorCtx = requireDynamicLib('editorLib').createEditorContext('editor');
  109. // #endif
  110. // #ifdef APP-PLUS || MP-WEIXIN || H5
  111. uni.createSelectorQuery().select('#editor').context((res) => {
  112. this.editorCtx = res.context
  113. }).exec()
  114. // #endif
  115. },
  116. onStatusChange(e) {
  117. const formats = e.detail
  118. this.formats = formats
  119. },
  120. insertImage() {
  121. uni.chooseImage({
  122. count: 1,
  123. success: (res) => {
  124. console.log(res);
  125. this.editorCtx.insertImage({
  126. src: res.tempFilePaths[0],
  127. alt: '图像',
  128. success: function(res) {
  129. console.log(res);
  130. }
  131. })
  132. }
  133. })
  134. }
  135. }
  136. }
  137. </script>
  138. <style lang="scss" scoped>
  139. @import "./editor-icon.css";
  140. .btn {
  141. width: 100%;
  142. height: 84rpx;
  143. background: #05cca1;
  144. border-radius: 42rpx;
  145. color: #fff;
  146. text-align: center;
  147. line-height: 84rpx;
  148. font-size: 32rpx;
  149. }
  150. .ql-container {
  151. border-bottom: 1px solid #f2f2f2;
  152. }
  153. /deep/.uni-stat__select {
  154. background-color: #fff !important;
  155. }
  156. /deep/.uni-input-placeholder {
  157. left: 20rpx;
  158. }
  159. .editor-content {
  160. background-color: #fff;
  161. border-radius: 20rpx;
  162. box-sizing: border-box;
  163. padding: 20rpx;
  164. }
  165. </style>