create.vue 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. <template>
  2. <view class="page">
  3. <view class="form">
  4. <u-form :model="form" ref="uForm">
  5. <u-form-item label-width="150" label="姓名" prop="name" required>
  6. <u-input placeholder="请输入客户姓名" v-model="form.name" type="text"></u-input>
  7. </u-form-item>
  8. <u-form-item label-width="150" label="性别" prop="sex" required>
  9. <u-radio-group v-model="form.sex" active-color="#2979ff">
  10. <u-radio name="male">先生</u-radio>
  11. <u-radio name="female">女士</u-radio>
  12. </u-radio-group>
  13. </u-form-item>
  14. <u-form-item label-width="150" label="手机号" prop="phone" required>
  15. <u-input placeholder="请输入手机号" v-model="form.phone" type="number"></u-input>
  16. </u-form-item>
  17. <u-form-item label-width="150" label="备注信息" prop="remark" label-position="top">
  18. <u-input placeholder="客户描述说明,如客户意向户型或面积等信息" v-model="form.remark" type="textarea"></u-input>
  19. </u-form-item>
  20. <u-form-item label-width="150" label="意向项目" prop="estate_name" required>
  21. <u-input type="select" :select-open="propertySelectShow" v-model="form.estate_name" placeholder="请选择推荐项目" @click="propertySelectShow = true"></u-input>
  22. </u-form-item>
  23. <!-- <u-form-item v-show="form.estate_id !== null" label-width="180" label="指定置业顾问" prop="saler_id">
  24. <u-input type="select" :select-open="salerSelectShow" v-model="form.saler_name" placeholder="非必选" @click="salerSelectShow = true"></u-input>
  25. </u-form-item> -->
  26. </u-form>
  27. <u-gap height="60"></u-gap>
  28. <u-button type="primary" :diabled="submitButtonDisabled" @click="submitHandle">提交</u-button>
  29. </view>
  30. <!-- 列表选择 -->
  31. <u-select mode="single-column" :list="propertySelectList" v-model="propertySelectShow" @confirm="propertySelectConfirm"></u-select>
  32. <u-select mode="single-column" :list="salerSelectList" v-model="salerSelectShow" @confirm="salerSelectConfirm"></u-select>
  33. <!-- modal -->
  34. <u-modal v-model="submitModalShow" content="请务必仔细确认各项信息是否正确" :show-cancel-button="true" @confirm="submit()"></u-modal>
  35. <u-modal v-model="modalShow" :content="modalContent" :show-cancel-button="true" @cancel="modalCancel()" @confirm="modalConfirm()"></u-modal>
  36. <!-- utoast -->
  37. <u-toast ref="uToast" />
  38. </view>
  39. </template>
  40. <script>
  41. export default {
  42. data() {
  43. return {
  44. form: {
  45. name: null,
  46. phone: null,
  47. sex: 'male',
  48. remark: null,
  49. estate_id: null,
  50. estate_name: null,
  51. saler_id: null,
  52. saler_name: null
  53. },
  54. customer_id: null,
  55. submitButtonDisabled: true,
  56. rules: {
  57. name: [
  58. {
  59. required: true,
  60. message: '姓名不得为空',
  61. trigger: ['change', 'blur']
  62. },
  63. ],
  64. phone: [
  65. {
  66. required: true,
  67. message: '手机号不得为空',
  68. trigger: ['change', 'blur']
  69. },
  70. // 11个字符判断
  71. {
  72. len: 11,
  73. message: '手机号格式不正确',
  74. trigger: ['change', 'blur']
  75. },
  76. ],
  77. estate_name: [
  78. {
  79. required: true,
  80. message: '意向项目不能为空',
  81. trigger: ['change']
  82. },
  83. ]
  84. },
  85. propertySelectShow: false,
  86. propertySelectList: [],
  87. salerSelectShow: false,
  88. salerSelectList: [],
  89. submitModalShow: false,
  90. modalShow: false,
  91. modalContent: ''
  92. };
  93. },
  94. onLoad(data) {
  95. },
  96. created () {
  97. uni.api.estate.apiestatelist().then(res => {
  98. let list = res.list || []
  99. let propertySelectList = []
  100. list.forEach(item => {
  101. propertySelectList.push({
  102. value: item.estate_id,
  103. label: item.estate_name,
  104. })
  105. })
  106. this.propertySelectList = [...propertySelectList]
  107. })
  108. },
  109. // 必须要在onReady生命周期,因为onLoad生命周期组件可能尚未创建完毕
  110. onReady() {
  111. this.$refs.uForm.setRules(this.rules);
  112. },
  113. methods: {
  114. // 选择所属项目回调
  115. propertySelectConfirm(e) {
  116. e.map((val, index) => {
  117. this.form.estate_id = val.value;
  118. this.form.estate_name = val.label;
  119. });
  120. },
  121. submitHandle() {
  122. const that = this
  123. this.$refs.uForm.validate(valid => {
  124. if (valid) {
  125. // 验证成功
  126. uni.api.estate.apireportadd({
  127. phone_type: 1,
  128. name: that.form.name,
  129. phone: that.form.phone,
  130. sex: that.form.sex,
  131. remark: that.form.remark,
  132. estate_id: that.form.estate_id,
  133. estate_name: that.form.estate_name,
  134. }).then(res => {
  135. uni.$msgConfirm('添加成功,是否前往客户列表?', () => {
  136. uni.navigateTo({
  137. url: '/pages/agent/recommend/list'
  138. })
  139. }, () => {
  140. this.form = {
  141. name: null,
  142. phone: null,
  143. sex: 'male',
  144. remark: null,
  145. estate_id: null,
  146. estate_name: null,
  147. }
  148. })
  149. })
  150. } else {
  151. console.log('验证失败');
  152. }
  153. });
  154. },
  155. // 获取手机号
  156. getPhoneNumber: function(e) {
  157. // 点击获取手机号码按钮
  158. let _that = this;
  159. if (e.detail.errMsg == 'getPhoneNumber:fail user deny') {
  160. _that.$refs.uToast.show({
  161. title: '您可以在个人设置中再次绑定',
  162. type: 'warning'
  163. });
  164. setTimeout(() => {
  165. _that.reLunchUser();
  166. }, 1500);
  167. return; // 即用户拒绝授权
  168. }
  169. console.log(e.detail.errMsg);
  170. console.log(e.detail.iv);
  171. console.log(e.detail.encryptedData);
  172. let iv = e.detail.iv;
  173. let encryptedData = e.detail.encryptedData;
  174. // 不是登陆完第一时间授权
  175. wx.login({
  176. success(res) {
  177. if (res.code) {
  178. // 设置用户手机号
  179. _that.setUserPhoneNumber(encryptedData, iv, res.code);
  180. } else {
  181. this.$refs.uToast.show({
  182. title: res.errMsg,
  183. type: 'warning'
  184. });
  185. console.log('登录失败!' + res.errMsg);
  186. }
  187. }
  188. });
  189. },
  190. // 以下是工具函数
  191. // 关闭键盘
  192. hideKeyboard() {
  193. uni.hideKeyboard();
  194. },
  195. // 格式化日期的月份或天数的显示(小于10,在前面增加0)
  196. getFormatDate(value) {
  197. if (value == undefined || value == '') {
  198. return '';
  199. }
  200. var str = value;
  201. if (parseInt(value) < 10) {
  202. str = '0' + value;
  203. }
  204. return str;
  205. }
  206. }
  207. };
  208. </script>
  209. <style lang="scss">
  210. .page {
  211. padding: 20rpx;
  212. background-color: #ffffff;
  213. }
  214. .form {
  215. border-radius: 10rpx;
  216. padding: 0 40rpx;
  217. }
  218. .popup-body {
  219. .tips-title {
  220. font-size: $u-p;
  221. margin-bottom: 20rpx;
  222. }
  223. .tips-content {
  224. font-size: $u-p2;
  225. color: $u-tips-color;
  226. margin-bottom: 60rpx;
  227. }
  228. }
  229. .id_card {
  230. color: #606266;
  231. width: 100%;
  232. height: 350rpx;
  233. display: flex;
  234. flex-direction: column;
  235. align-items: center;
  236. justify-content: center;
  237. background-color: #f4f5f6;
  238. font-size: $u-p2;
  239. }
  240. .footer {
  241. position: absolute;
  242. text-align: center;
  243. bottom: 40rpx;
  244. font-size: $u-p2;
  245. .agreement {
  246. color: $u-type-error;
  247. }
  248. }
  249. .slot-content {
  250. font-size: 28rpx;
  251. color: $u-content-color;
  252. padding: 20rpx;
  253. }
  254. </style>