index.vue 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. <template>
  2. <!-- 故障上报 -->
  3. <view>
  4. <!-- 上报表单 -->
  5. <view class="form-panel">
  6. <view class="form-title">
  7. 基本信息
  8. </view>
  9. <input class="form-input" v-model="aftersale.device_id" placeholder="请输入设备ID" type="text" />
  10. <input class="form-input" v-model="aftersale.user" placeholder="请输入联系人名称" type="text" />
  11. <input class="form-input" v-model="aftersale.phone" placeholder="请输入联系人电话" type="text" />
  12. <input class="form-input" v-model="aftersale.addr" placeholder="请输入联系人地址" type="text" />
  13. <view class="form-title" style="padding-top: 24rpx;">
  14. 故障信息
  15. </view>
  16. <textarea class="form-textarea" v-model="aftersale.errordesc" maxlength="300"
  17. placeholder="请尽量详细描述您所反馈的意见(不少于10个文字)" />
  18. <view class="form-words">{{aftersale.errordesc.length}}/300</view>
  19. <view class="row-between form-title">
  20. 图片上传
  21. <text class="font-10">最多5张图片</text>
  22. </view>
  23. <!-- 上传图片 -->
  24. <view class="ui-upload" id="descripImg">
  25. <view class="ui-upload_file">
  26. <image src="@/static/demo/demo2.png" @click="previewImage()" class="ui-upload_img"
  27. mode="aspectFill">
  28. </image>
  29. </view>
  30. <view class="ui-upload_input" @click="uploadFile">
  31. <image src="@/static/img/upload.png" class="ui-upload_img" mode="aspectFill"></image>
  32. </view>
  33. </view>
  34. </view>
  35. <view class="form-submit">
  36. <button class="btn" :disabled="saveLoading" @click="submitAftersaleInfo">提交</button>
  37. </view>
  38. </view>
  39. </template>
  40. <script>
  41. import {
  42. uploadFile,
  43. saveAftersaleInfo
  44. } from '@/api/aftersale.js'
  45. export default {
  46. data() {
  47. return {
  48. // 图片列表
  49. imgList: [],
  50. // 上报信息
  51. aftersale: {
  52. device_id: '',
  53. errordesc: "", //描述信息
  54. errorimg: "", //图片链接,多张图片用 , 进行隔开
  55. errorvideo: "", //视频链接
  56. addr: "", //原图片链接
  57. user: "", //用户
  58. phone: "" //联系电话
  59. },
  60. saveLoading: false,
  61. }
  62. },
  63. methods: {
  64. // 上传图片
  65. async uploadFile(e) {
  66. let res = await this.uploadImageSync();
  67. if (res.success) {
  68. }
  69. },
  70. uploadImageSync() {
  71. return new Promise((resolve, reject) => {
  72. uni.chooseImage({
  73. count: 5, // 默认9
  74. sizeType: ['compressed'], // 可以指定是原图还是压缩图,默认二者都有
  75. sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
  76. success(res) {
  77. const tempFilePaths = res.tempFilePaths;
  78. }
  79. })
  80. })
  81. },
  82. uploadVideoSync() {
  83. return new Promise((resolve, reject) => {
  84. uni.chooseVideo({
  85. sourceType: ['camera', 'album'],
  86. success(res) {
  87. self.src = res.tempFilePath;
  88. }
  89. });
  90. })
  91. },
  92. // 提交保存
  93. async submitAftersaleInfo(e) {
  94. this.$api.loading("上报中...");
  95. this.saveLoading = true;
  96. await saveAftersaleInfo(this.aftersale);
  97. this.saveLoading = false;
  98. this.$api.hide();
  99. }
  100. }
  101. }
  102. </script>
  103. <style lang="scss">
  104. .form-panel {
  105. padding: 24rpx;
  106. margin-top: 24rpx;
  107. background: #fff;
  108. border-radius: 12rpx;
  109. }
  110. .form-title {
  111. padding: 0 16rpx 16rpx;
  112. font-size: 32rpx;
  113. color: #272A2E;
  114. }
  115. .form-input,
  116. .form-textarea {
  117. margin-bottom: 24rpx;
  118. font-size: 28rpx;
  119. line-height: 40rpx;
  120. }
  121. .form-input {
  122. padding: 22rpx 28rpx;
  123. background: #F3F5F9;
  124. border-radius: 12rpx;
  125. }
  126. .form-textarea {
  127. width: calc(100% - 32rpx);
  128. padding: 15rpx 22rpx;
  129. margin: 0 16rpx;
  130. font-size: 24rpx;
  131. box-sizing: border-box;
  132. background: #F3F4F5;
  133. border-radius: 8rpx;
  134. }
  135. .form-words {
  136. margin: 10rpx 16rpx;
  137. font-size: 24rpx;
  138. color: #272A2E;
  139. text-align: right;
  140. }
  141. .form-submit {
  142. padding: 120rpx 24rpx;
  143. overflow: hidden;
  144. }
  145. </style>