feedback.vue 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. <template>
  2. <view class="feedbox">
  3. <u-form :model="model" :rules="rules" ref="uForm" :errorType="errorType">
  4. <u-form-item label="反馈内容" prop="content" label-width="150">
  5. <u-input type="textarea" :border="border" placeholder="请输入您的投诉/建议" v-model="model.content" />
  6. </u-form-item>
  7. <u-form-item label="图片说明" prop="images" label-width="150">
  8. <!-- <u-upload></u-upload> -->
  9. <!-- width="160" height="160" -->
  10. <u-upload width="160" height="160"
  11. max-count='1'
  12. v-model="formData.file"
  13. :action="action"
  14. :file-list="fileList"
  15. :name="uploadName"
  16. :header="uploadHeader"
  17. :form-data="formData"
  18. @on-error="onError"
  19. @on-remove="onRemove"
  20. @on-success="onSuccess"></u-upload>
  21. </u-form-item>
  22. <u-form-item label="联系方式" prop="contact" label-width="150">
  23. <!-- type="number" -->
  24. <!-- <u-input :border="border" placeholder="请输入联系方式" v-model="model.contact"></u-input> -->
  25. <u-input :border="border" placeholder="请输入您的手机号" v-model="model.contact" type="number"></u-input>
  26. </u-form-item>
  27. </u-form>
  28. <view class="submitBtn">
  29. <u-button class="" type="primary" @click="submit">提交</u-button>
  30. </view>
  31. </view>
  32. </template>
  33. <script>
  34. import { hex_sha1 } from '@/utils/sha1.js'
  35. import { objKeySort,naviBackEmit } from '@/utils/tools.js'
  36. export default {
  37. data() {
  38. let that = this;
  39. let secret = 'yrb1vdc2qc'
  40. let formData = {
  41. target: "oss",
  42. type: 'image',
  43. }
  44. let sign = hex_sha1(secret + objKeySort(formData));
  45. console.log(sign);
  46. return {
  47. action: this.$env.apiUrl + "/api/client/index/upload",
  48. uploadName: 'file',
  49. uploadHeader:{
  50. 'Content-Type': 'multipart/form-data',
  51. sign,
  52. },
  53. formData:{
  54. target: "oss",
  55. type: 'image',
  56. file:null
  57. },
  58. fileList:[],
  59. border: false,
  60. errorType: ['message'],
  61. model: {
  62. content: '',
  63. contact: '',
  64. images: ''
  65. },
  66. rules: {
  67. content: [
  68. {
  69. required: true,
  70. message: '请输入您的投诉/建议'
  71. },
  72. {
  73. min: 5,
  74. message: '投诉/建议不能少于5个字',
  75. trigger: 'change' ,
  76. },
  77. // 正则校验示例,此处用正则校验是否中文,此处仅为示例,因为uView有this.$u.test.chinese可以判断是否中文
  78. // {
  79. // pattern: /^[\u4e00-\u9fa5]+$/gi,
  80. // message: '简介只能为中文',
  81. // trigger: 'change',
  82. // },
  83. ],
  84. /* contact: [
  85. {
  86. required: true,
  87. message: '请输入您的联系方式',
  88. trigger: ['change','blur'],
  89. },
  90. // {
  91. // validator: (rule, value, callback) => {
  92. // // 调用uView自带的js验证规则,详见:https://www.uviewui.com/js/test.html
  93. // return this.$u.test.mobile(value);
  94. // },
  95. // message: '手机号码不正确',
  96. // // 触发器可以同时用blur和change,二者之间用英文逗号隔开
  97. // trigger: ['change','blur'],
  98. // }
  99. ], */
  100. contact: [
  101. {
  102. required: true,
  103. message: '请输入正确的手机号',
  104. trigger: ['change','blur'],
  105. },
  106. {
  107. validator: (rule, value, callback) => {
  108. // 调用uView自带的js验证规则,详见:https://www.uviewui.com/js/test.html
  109. return this.$u.test.mobile(value);
  110. },
  111. message: '请输入正确的手机号',
  112. // 触发器可以同时用blur和change,二者之间用英文逗号隔开
  113. trigger: ['change','blur'],
  114. }
  115. ],
  116. },
  117. };
  118. },
  119. onLoad() {
  120. },
  121. onReady() {
  122. this.$refs.uForm.setRules(this.rules);
  123. },
  124. methods: {
  125. onError(data, index, lists) {
  126. console.log('onError', data, index, lists);
  127. },
  128. onSuccess(data, index, lists) {
  129. console.log('onSuccess', data, index, lists);
  130. this.model.images = data.data.full_url;
  131. },
  132. onRemove(data, index, lists) {
  133. this.model.images=null;
  134. },
  135. submit() {
  136. this.$refs.uForm.validate(valid => {
  137. if (valid) {
  138. this.addFeedbackFun();
  139. } else {
  140. console.log('验证失败');
  141. }
  142. });
  143. },
  144. addFeedbackFun(){
  145. console.log(this.model);
  146. // return;
  147. this.$u.api.addFeedbackAjax(this.model).then(({code,data})=>{
  148. this.$u.toast('已收到您的反馈,我们将尽快处理')
  149. })
  150. },
  151. }
  152. };
  153. </script>
  154. <style scoped lang="scss">
  155. .submitBtn{
  156. margin: 100rpx 100rpx 0;
  157. }
  158. .feedbox {
  159. padding: 30rpx;
  160. background-color: #fff;
  161. min-height: 100vh;
  162. }
  163. .agreement {
  164. display: flex;
  165. align-items: center;
  166. margin: 40rpx 0;
  167. .agreement-text {
  168. padding-left: 8rpx;
  169. color: $u-tips-color;
  170. }
  171. }
  172. </style>