certification.vue 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. <template>
  2. <view style="padding: 20rpx;">
  3. <view class="box">
  4. <uni-forms :modelValue="form" :rules="rules" ref="formRef" label-width="180rpx" label-align="right">
  5. <uni-forms-item label="姓名" name="name" required>
  6. <uni-easyinput type="text" v-model="form.name" placeholder="请输入姓名" />
  7. </uni-forms-item>
  8. <uni-forms-item label="本人照片" name="avatar" required>
  9. <uni-file-picker limit="1" :image-styles="imageStyles" :del-icon="false" :disable-preview="true"
  10. fileMediatype="image" v-model="imgs" @select="handleAvatarUploadSuccess"></uni-file-picker>
  11. </uni-forms-item>
  12. <uni-forms-item label="联系方式" name="phone" required>
  13. <uni-easyinput type="text" v-model="form.phone" placeholder="请输入联系方式" />
  14. </uni-forms-item>
  15. <uni-forms-item label="身份证号码" name="cardNo" required>
  16. <uni-easyinput type="text" v-model="form.cardNo" placeholder="请输入身份证号码" />
  17. </uni-forms-item>
  18. <uni-forms-item label="身份证正面" name="card1" required>
  19. <uni-file-picker limit="1" :image-styles="imageStyles" :del-icon="false" :disable-preview="true"
  20. fileMediatype="image" v-model="imgs1" @select="handleCard1UploadSuccess"></uni-file-picker>
  21. </uni-forms-item>
  22. <uni-forms-item label="身份证反面" name="card2" required>
  23. <uni-file-picker limit="1" :image-styles="imageStyles" :del-icon="false" :disable-preview="true"
  24. fileMediatype="image" v-model="imgs2" @select="handleCard2UploadSuccess"></uni-file-picker>
  25. </uni-forms-item>
  26. <uni-forms-item label="常住地址" name="address" required>
  27. <uni-easyinput type="text" v-model="form.address" placeholder="请输入常住地址" />
  28. </uni-forms-item>
  29. <uni-forms-item label="审核状态" name="status">
  30. <view style="padding-top: 15rpx;">
  31. <uni-tag type="default" v-if="!form.status" text="待申请"></uni-tag>
  32. <uni-tag type="warning" v-if="form.status === '待审核'" text="待审核">待审核</uni-tag>
  33. <uni-tag type="success" v-if="form.status === '通过'" text="通过">通过</uni-tag>
  34. <uni-tag type="error" v-if="form.status === '拒绝'" text="拒绝">拒绝</uni-tag>
  35. </view>
  36. </uni-forms-item>
  37. <uni-forms-item label="审核理由" name="reason" v-if="form.reason">
  38. <view style="padding-top: 15rpx;">
  39. {{ form.reason }}
  40. </view>
  41. </uni-forms-item>
  42. <view style="margin-bottom: 20rpx;">
  43. <button :disabled="form.status" class="my-button-primary" type="primary" @click="submitRequest">提交申请</button>
  44. </view>
  45. <view v-if="form.id && form.status === '拒绝'">
  46. <button class="my-button-danger" type="primary" @click="deleteRequest">删除申请</button>
  47. </view>
  48. </uni-forms>
  49. </view>
  50. </view>
  51. </template>
  52. <script>
  53. export default {
  54. data() {
  55. return {
  56. form: {},
  57. rules: {
  58. name: {
  59. rules: [{
  60. required: true,
  61. errorMessage: '请填写姓名',
  62. }]
  63. },
  64. phone: {
  65. rules: [{
  66. required: true,
  67. errorMessage: '请填写手机号',
  68. }]
  69. },
  70. cardNo: {
  71. rules: [{
  72. required: true,
  73. errorMessage: '请填写身份证号码',
  74. }]
  75. },
  76. address: {
  77. rules: [{
  78. required: true,
  79. errorMessage: '请填写常住地址',
  80. }]
  81. }
  82. },
  83. imgs: {},
  84. imgs1: {},
  85. imgs2: {},
  86. imageStyles: {
  87. "height": 80, // 边框高度
  88. "width": 80, // 边框宽度
  89. "border": { // 如果为 Boolean 值,可以控制边框显示与否
  90. "color": "#eee", // 边框颜色
  91. "width": "1px", // 边框宽度
  92. "style": "solid", // 边框样式
  93. // "radius": "50%" // 边框圆角,支持百分比
  94. }
  95. },
  96. user: uni.getStorageSync('xm-user')
  97. }
  98. },
  99. onLoad() {
  100. this.load()
  101. },
  102. methods: {
  103. deleteRequest() {
  104. this.$request.del('/certification/delete/' + this.form.id).then(res => {
  105. if (res.code === '200') {
  106. uni.showToast({
  107. icon: 'success',
  108. title: '删除成功'
  109. })
  110. this.load()
  111. uni.reLaunch({
  112. url: '/pages/certification/certification'
  113. })
  114. } else {
  115. uni.showToast({
  116. icon: 'none',
  117. title: res.msg
  118. })
  119. }
  120. })
  121. },
  122. load() { // 查询当前用户自己的认证信息
  123. this.$request.get('/certification/selectUserCertification').then(res => {
  124. this.form = res.data || {}
  125. if (this.form.avatar) {
  126. this.imgs.url = this.form.avatar
  127. }
  128. if (this.form.card1) {
  129. this.imgs1.url = this.form.card1
  130. }
  131. if (this.form.card2) {
  132. this.imgs2.url = this.form.card2
  133. }
  134. })
  135. },
  136. submitRequest() {
  137. this.$refs.formRef.validate().then(r => {
  138. this.form.userId = this.user.id
  139. this.$request.post('/certification/add', this.form).then(res => {
  140. if (res.code === '200') {
  141. uni.showToast({
  142. icon: 'success',
  143. title: '提交成功'
  144. })
  145. this.load()
  146. } else {
  147. uni.showToast({
  148. icon: 'none',
  149. title: res.msg
  150. })
  151. }
  152. })
  153. }).catch()
  154. },
  155. handleAvatarUploadSuccess(e) {
  156. let _this = this
  157. const filePath = e.tempFilePaths[0]
  158. uni.uploadFile({
  159. url: _this.$baseUrl + '/files/upload', //自己的后端接口(默认发送post请求) 注意 _this.$baseUrl需要在全局变量定义
  160. filePath: filePath,
  161. name: "file", //这里应为自己后端文件形参的名字
  162. success(res) {
  163. let url = JSON.parse(res.data || '{}').data // 获取返回的图像链接
  164. _this.form.avatar = url // 给表单图像属性赋值
  165. console.log(_this.form)
  166. }
  167. })
  168. },
  169. handleCard1UploadSuccess(e) {
  170. let _this = this
  171. const filePath = e.tempFilePaths[0]
  172. uni.uploadFile({
  173. url: _this.$baseUrl + '/files/upload', //自己的后端接口(默认发送post请求) 注意 _this.$baseUrl需要在全局变量定义
  174. filePath: filePath,
  175. name: "file", //这里应为自己后端文件形参的名字
  176. success(res) {
  177. let url = JSON.parse(res.data || '{}').data // 获取返回的图像链接
  178. _this.form.card1 = url // 给表单图像属性赋值
  179. }
  180. })
  181. },
  182. handleCard2UploadSuccess(e) {
  183. let _this = this
  184. const filePath = e.tempFilePaths[0]
  185. uni.uploadFile({
  186. url: _this.$baseUrl + '/files/upload', //自己的后端接口(默认发送post请求) 注意 _this.$baseUrl需要在全局变量定义
  187. filePath: filePath,
  188. name: "file", //这里应为自己后端文件形参的名字
  189. success(res) {
  190. let url = JSON.parse(res.data || '{}').data // 获取返回的图像链接
  191. _this.form.card2 = url // 给表单图像属性赋值
  192. }
  193. })
  194. },
  195. }
  196. }
  197. </script>
  198. <style>
  199. </style>