Step4.vue 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  1. <template>
  2. <div>
  3. <common @asynCallBack="asynCallBack"></common>
  4. <top-header :pageTitle="pageTitle"></top-header>
  5. <div class="mui-content">
  6. <div class="mui-content-padded vongi-qingjiadt">
  7. <form class="mui-input-group">
  8. <div class="mui-input-row">
  9. <label>所在小区</label>
  10. <span v-text="subForm.companyName"></span>
  11. </div>
  12. <div class="mui-input-row">
  13. <label>您的身份</label>
  14. <span v-text="subForm.roleName"></span>
  15. </div>
  16. <div class="mui-input-row">
  17. <label>楼栋房号</label>
  18. <span v-text="companyStructureName"></span>
  19. </div>
  20. </form>
  21. </div>
  22. <div class="mui-content-padded vongi-qingjiadt vongi-editme">
  23. <form class="mui-input-group">
  24. <div class="mui-input-row">
  25. <label>姓名<i class="colorfe616c">*</i></label>
  26. <input v-model="subForm.name" type="text" class="mui-input-clear" placeholder="请输入姓名">
  27. </div>
  28. <div class="mui-input-row">
  29. <label>手机号码</label>
  30. <input v-model="subForm.telephone" type="text" class="mui-input-clear" placeholder="请输入手机号码">
  31. </div>
  32. <div class="mui-input-row">
  33. <label>身份证号</label>
  34. <input v-model="subForm.idCard" type="text" class="mui-input-clear" placeholder="请输入身份证号">
  35. </div>
  36. <div class="mui-input-row">
  37. <label style="width:50%">照片<i class="colorfe616c">*</i><i class="iconfont icon-tishi color4fc5f7"></i></label>
  38. <button @click="chooseImage" class="mui-btn mui-btn-block mui-navigate-right" type='button' style="width:50%">
  39. <img v-if="subForm.faceImageUrl" :src="subForm.faceImageUrl" />
  40. <font v-else>请选择</font>
  41. </button>
  42. </div>
  43. </form>
  44. </div>
  45. <div class="vongi-btn vongi-login-btn">
  46. <button class="mui-btn mui-btn-primary" @click="submit">
  47. 提 交
  48. </button>
  49. </div>
  50. </div>
  51. </div>
  52. </template>
  53. <script>
  54. import * as API_Person from '@/apis/person'
  55. import Common from '$project/components/Common.vue'
  56. import Loading from '$project/components/Loading.vue'
  57. import TopHeader from '$project/components/TopHeader.vue'
  58. import {
  59. mapGetters,
  60. mapMutations
  61. } from 'vuex'
  62. import * as types from '$project/store/mutation-types'
  63. import Cropper from '$project/components/Cropper.vue'
  64. import * as WxJsApi from '$project/utils/wxJsApi'
  65. import {
  66. checkPhone,
  67. } from '$project/utils'
  68. export default {
  69. name: 'RegisterResidenceStep4',
  70. components: {
  71. Common,
  72. Loading,
  73. TopHeader,
  74. Cropper
  75. },
  76. data() {
  77. return {
  78. pageTitle: '注册',
  79. subForm: {
  80. sceneId: '',
  81. sceneName: '',
  82. personRoleId: '',
  83. roleName: '',
  84. name: '',
  85. telephone: '',
  86. personId: '',
  87. companyId: '',
  88. companyName: '请选择',
  89. companyStructureId: '',
  90. //companyStructureName: '请选择',
  91. //最终选择的数据
  92. selectCompanyStructureList: [],
  93. address: '',
  94. idCard: '',
  95. faceImageUrl: ''
  96. },
  97. isLoading: false,
  98. roleList: [],
  99. cropperVisible: '',
  100. cropperField: '',
  101. cropperWidth: 250,
  102. cropperHeight: 350,
  103. cropper: {
  104. img: '',
  105. info: true,
  106. size: 1,
  107. outputType: 'jpeg',
  108. canScale: false,
  109. autoCrop: false,
  110. // 只有自动截图开启 宽度高度才生效
  111. autoCropWidth: 250,
  112. autoCropHeight: 350,
  113. fixed: true,
  114. // 真实的输出宽高
  115. infoTrue: true,
  116. fixedNumber: [5, 7]
  117. },
  118. }
  119. },
  120. created() {
  121. this.subForm = this.register_form_data;
  122. },
  123. methods: {
  124. //微信选择图片
  125. chooseImage() {
  126. WxJsApi.chooseImage().then(res => {
  127. var localData = res.localData;
  128. if (localData.indexOf('data:image') != 0) {
  129. //判断是否有这样的头部
  130. localData = 'data:image/jpeg;base64,' + localData
  131. }
  132. localData = localData.replace(/\r|\n/g, '').replace('data:image/jgp', 'data:image/jpeg')
  133. this.imgBase64 = localData;
  134. //显示裁剪图片
  135. this.showCropper('faceImageUrl');
  136. //this.uploadpic();
  137. }).catch(error => {
  138. mui.toast(error);
  139. })
  140. },
  141. //显示裁剪图片
  142. showCropper(field) {
  143. this.cropper.img = this.imgBase64;
  144. this.cropperField = field;
  145. this.cropperVisible = true;
  146. },
  147. //裁剪图片
  148. cropperFinish(obj) {
  149. console.log(obj);
  150. this.imgBase64 = obj.data;
  151. this.uploadpic(obj.field);
  152. this.cropperVisible = false;
  153. },
  154. //隐藏裁剪图片
  155. cropperCancel() {
  156. this.cropperVisible = false;
  157. },
  158. //上传图片
  159. uploadpic() {
  160. this.isLoading = true;
  161. WxJsApi.uploadPic(this.imgBase64).then(response => {
  162. this.isLoading = false;
  163. this.subForm.faceImageUrl = response;
  164. }).catch(error => {
  165. this.isLoading = false;
  166. mui.toast(error);
  167. })
  168. },
  169. //表单检测
  170. checkFrom() {
  171. let phoneResult = checkPhone(this.subForm.telephone);
  172. if (!this.subForm.name) {
  173. mui.toast('请输入姓名');
  174. return false;
  175. } else if (typeof phoneResult == 'string') {
  176. mui.toast('请输入手机号');
  177. return false;
  178. } else if (!this.subForm.faceImageUrl) {
  179. mui.toast('请上传人脸照片');
  180. return false;
  181. } else {
  182. return true;
  183. }
  184. },
  185. //提交
  186. submit() {
  187. if (this.checkFrom()) {
  188. this.isLoading = true;
  189. API_Person.register(this.subForm).then(response => {
  190. this.isLoading = false;
  191. mui.toast('提交成功,等待审核中');
  192. this.$router.push({
  193. name: 'UserLogin',
  194. project: 'residence'
  195. })
  196. }).catch(error => {
  197. this.isLoading = false;
  198. mui.toast(error);
  199. })
  200. }
  201. },
  202. asynCallBack() {
  203. },
  204. ...mapMutations({
  205. set_register_form_data: types.SET_REGISTER_FORM_DATA,
  206. })
  207. },
  208. mounted() {
  209. //获取微信配置
  210. WxJsApi.getWxConfig();
  211. },
  212. destroyed() {
  213. },
  214. computed: {
  215. companyStructureName: {
  216. // getter
  217. get: function() {
  218. let nameArr = [];
  219. this.subForm.selectCompanyStructureList.forEach(function(item) {
  220. nameArr.push(item.name);
  221. })
  222. return nameArr.join('-');
  223. },
  224. // setter
  225. set: function(newValue) {
  226. console.log(newValue)
  227. }
  228. },
  229. ...mapGetters({
  230. openId: 'wx_openid',
  231. token: 'token',
  232. person_data: 'person_data',
  233. person_popedom: 'person_popedom',
  234. register_form_data: 'register_form_data'
  235. })
  236. }
  237. }
  238. </script>
  239. <style scoped src="$project/assets/css/xpwyfyy.css"></style>
  240. <style src="$project/assets/css/iconfont.css"></style>
  241. <style>
  242. </style>