applyToPromotion.vue 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471
  1. <template>
  2. <view class="container">
  3. <view class="topView">
  4. <!-- <view class='label1View'>
  5. <text>个人信息</text>
  6. </view> -->
  7. <view class='nameView'>
  8. <text>姓名:</text>
  9. <input v-model="formData.username" type="text" placeholder="请输入姓名"/>
  10. </view>
  11. <view class="line"></view>
  12. <view class='nameView'>
  13. <text>手机:</text>
  14. <input v-model="formData.phone" type="number" placeholder="请输入手机号码" />
  15. </view>
  16. <view class="line"></view>
  17. <view class='nameView'>
  18. <text>身份证号:</text>
  19. <input v-model="formData.idCard" type="text" placeholder="请输入身份证号码" />
  20. </view>
  21. <view class="line"></view>
  22. <view class="cameraViewBg">
  23. <text>身份证:</text>
  24. <view class="cameraView">
  25. <view style="width:156rpx;height:150rpx;">
  26. <view style="width:156rpx;height:106rpx" @tap="tapToMenu(2)">
  27. <image style="width:156rpx;height:106rpx" :src="formData.idCardFrontImage?formData.idCardFrontImage:'http://139.9.103.171:1888/img/image/cameraImage.png'" />
  28. </view>
  29. <view style="width:156rpx;text-align: center;font-size: 24upx;">正面</view>
  30. </view>
  31. <view style="width:156rpx;height:150rpx;margin-left: 81rpx;">
  32. <view style="width:156rpx;height:106rpx" @tap="tapToMenu(3)">
  33. <image style="width:156rpx;height:106rpx" :src="formData.idCardBackImage?formData.idCardBackImage:'http://139.9.103.171:1888/img/image/cameraImage.png'" />
  34. </view>
  35. <view style="width:156rpx;text-align: center;font-size: 24upx;">背面</view>
  36. </view>
  37. </view>
  38. </view>
  39. <!-- <view class='label1View'>
  40. <text>团长信息</text>
  41. </view> -->
  42. <!-- <view class='nameView' @tap="chooseImgs(3)">
  43. <text>开团小区头像:</text>
  44. <image
  45. :src="formData.organizeIcon?formData.organizeIcon:'http://139.9.103.171:1888/img/image/avatar.png'"
  46. mode="aspectFit"
  47. style="width: 80upx;
  48. height: 80upx;
  49. border-radius: 50%;
  50. margin:20upx;
  51. background-color: #f7f7f7;"
  52. ></image>
  53. </view>
  54. <view class="line"></view> -->
  55. <view class='nameView'>
  56. <text>开团小区名字:</text>
  57. <input v-model="formData.organizeName" type="text" placeholder="请输入姓名"/>
  58. </view>
  59. <view class="line"></view>
  60. <view class='nameView'>
  61. <text>工作时间:</text>
  62. <view style="display: flex;">
  63. <picker mode="multiSelector" :range="timeArr" :value="startTimeArrIndex" @change="bindStartChange">
  64. <view class="time">
  65. {{startTime}}
  66. </view>
  67. </picker>
  68. <view class="timeCenter">至</view>
  69. <picker mode="multiSelector" :range="timeArr" :value="endTimeArrIndex" @change="bindEndChange">
  70. <view class="time">
  71. {{endTime}}
  72. </view>
  73. </picker>
  74. </view>
  75. </view>
  76. <view class="line"></view>
  77. <view class='nameView' @tap="selectAddress">
  78. <text>小区地址:</text>
  79. <view
  80. v-if="receiverAddress && receiverAddress.consignee"
  81. class="time"
  82. style="height: 100upx;line-height: 100upx;width:500upx;">{{ receiverAddress.areaName + receiverAddress.address }}</view>
  83. <view v-else class="time" style="height: 100upx;line-height: 100upx;">
  84. 请选择
  85. </view>
  86. </view>
  87. </view>
  88. <view class="btnView">
  89. <view class="btn" @tap="tapToMenu(0)">
  90. <Text>提交申请</text>
  91. </view>
  92. <view class="btn1" @tap="tapToMenu(1)">
  93. <Text>取消申请</text>
  94. </view>
  95. </view>
  96. </view>
  97. </template>
  98. <script>
  99. export default {
  100. data() {
  101. return {
  102. formData:{
  103. id:'',
  104. username:'',
  105. phone:'',
  106. idCard:'',
  107. idCardFrontImage:'',
  108. idCardBackImage:'',
  109. storeId:'',
  110. organizeName:'',
  111. jobTime:'',
  112. receiverId:'',
  113. organizePhone:''
  114. },
  115. formRules:{
  116. id:[{
  117. required:true,
  118. message:'用户id不能为空'
  119. }],
  120. username:[{
  121. required:true,
  122. message:'请输入姓名'
  123. }],
  124. phone:[{
  125. required:true,
  126. message:'请输入电话号码'
  127. },{
  128. type:'mobile',
  129. message:'手机号码有误!'
  130. }],
  131. idCard:[{
  132. required:true,
  133. message:'请输入身份证号'
  134. }],
  135. idCardFrontImage:[{
  136. required:true,
  137. message:'请上传身份证'
  138. }],
  139. idCardBackImage:[{
  140. required:true,
  141. message:'请上传身份证'
  142. }],
  143. organizeName:[{
  144. required:true,
  145. message:'请输入团长名称'
  146. }],
  147. jobTime:[{
  148. required:true,
  149. message:'请选择工作时间'
  150. }],
  151. receiverId:[{
  152. required:true,
  153. message:'请选择收货地址'
  154. }]
  155. },
  156. timeArr:[
  157. ['周一','周二','周三','周四','周五','周六','周日'],
  158. ],
  159. hourArray:[],
  160. minuteArray:[],
  161. statrTimeArrIndex:[0,0,0],
  162. endTimeArrIndex:[0,0,0],
  163. startTime:'请选择开始时间',
  164. endTime:'请选择结束时间',
  165. memberInfo:'',
  166. userDetail:'',
  167. receiverAddress:null
  168. }
  169. },
  170. created() {
  171. console.log(this.formData.receiverId)
  172. this.initData();
  173. for(let i =0;i<24;i++){
  174. if(i.toString().length==1){
  175. i = '0'+i;
  176. }
  177. this.hourArray.push(i+'时')
  178. }
  179. for(let i =0;i<60;i++){
  180. if(i.toString().length==1){
  181. i = '0'+i;
  182. }
  183. this.minuteArray.push(i+'分')
  184. }
  185. this.timeArr.push(this.hourArray);
  186. this.timeArr.push(this.minuteArray);
  187. console.log(this.timeArr)
  188. },
  189. methods: {
  190. selectAddress() {
  191. uni.navigateTo({
  192. url: '/pagesM/pages/address_list?isFromOrder=1'
  193. });
  194. },
  195. async initData(){
  196. this.memberId = this.$auth.getMemberId();
  197. let resp = await this.$api.getMyBaseDatas({
  198. _isShowLoading: true,
  199. _isReject: true,
  200. _isPull: this.isPull,
  201. memberId: this.memberId
  202. });
  203. this.userDetail = resp;
  204. console.log(resp);
  205. this.userDetail = resp.user;
  206. this.formData.organizeName = this.userDetail.username;
  207. this.formData.organizeIcon = this.userDetail.avatar;
  208. this.formData.phone = this.userDetail.mobile;
  209. },
  210. bindStartChange(e){
  211. this.statrTimeArrIndex = e.target.value;
  212. this.startTime = this.timeArr[0][this.statrTimeArrIndex[0]]+this.timeArr[1][this.statrTimeArrIndex[1]]+this.timeArr[2][this.statrTimeArrIndex[2]];
  213. if(this.endTime!='请选择'){
  214. let startDay = this.timeArr[0][this.statrTimeArrIndex[0]];
  215. let startTime = this.timeArr[1][this.statrTimeArrIndex[1]].replace('时','')+':'+this.timeArr[2][this.statrTimeArrIndex[2]].replace('分','');
  216. let endDay = this.timeArr[0][this.endTimeArrIndex[0]];
  217. let endTime = this.timeArr[1][this.endTimeArrIndex[1]].replace('时','')+':'+this.timeArr[2][this.endTimeArrIndex[2]].replace('分','');
  218. this.formData.jobTime = startDay+'至'+endDay+' '+ startTime+'-'+endTime;
  219. }
  220. console.log(this.formData.jobTime)
  221. },
  222. bindEndChange(e){
  223. this.endTimeArrIndex = e.target.value;
  224. this.endTime = this.timeArr[0][this.endTimeArrIndex[0]]+this.timeArr[1][this.endTimeArrIndex[1]]+this.timeArr[2][this.endTimeArrIndex[2]];
  225. if(this.startTime!='请选择'){
  226. let startDay = this.timeArr[0][this.statrTimeArrIndex[0]];
  227. let startTime = this.timeArr[1][this.statrTimeArrIndex[1]].replace('时','')+':'+this.timeArr[2][this.statrTimeArrIndex[2]].replace('分','');
  228. let endDay = this.timeArr[0][this.endTimeArrIndex[0]];
  229. let endTime = this.timeArr[1][this.endTimeArrIndex[1]].replace('时','')+':'+this.timeArr[2][this.endTimeArrIndex[2]].replace('分','');
  230. this.formData.jobTime = startDay+'至'+endDay+' '+ startTime+'-'+endTime;
  231. }
  232. console.log(this.formData.jobTime)
  233. },
  234. tapToMenu(idx) {
  235. switch (idx) {
  236. case 0: // 提交申请
  237. this.commit();
  238. break;
  239. case 1: // 取消申请
  240. uni.navigateBack({
  241. delta:1
  242. })
  243. break;
  244. case 2: // 正面
  245. this.chooseImgs(1)
  246. break;
  247. case 3: // 背面
  248. this.chooseImgs(2)
  249. break;
  250. }
  251. },
  252. async commit() {
  253. if(this.receiverAddress){
  254. this.formData.receiverId = this.receiverAddress.id;
  255. }
  256. if(!this.validate(this.formRules,this.formData)){
  257. return
  258. }
  259. let _this = this;
  260. let {id,username,
  261. idCard,phone,
  262. idCardFrontImage,
  263. idCardBackImage,
  264. storeId,
  265. organizeName,
  266. organizeIcon,
  267. jobTime,
  268. receiverId} = this.formData;
  269. let resp = await this.$api.distributorApply({
  270. _isShowLoading: true,
  271. id: id,
  272. username:username,
  273. idCard: idCard,
  274. idCardImage : idCardFrontImage +','+idCardBackImage,
  275. phone: phone,
  276. organizeName:organizeName,
  277. organizeIcon:organizeIcon,
  278. jobTime:jobTime,
  279. receiverId:receiverId
  280. })
  281. this.$dialog.success('申请成功', () => {
  282. // this.$util.refreshPage(['pages/mine','pages/mine_order_list'])
  283. // uni.navigateBack({
  284. // delta:4
  285. // })
  286. })
  287. },
  288. async uploadImg(path,idx){
  289. let promiseObj = await this.$api.uploadImg({
  290. _isReject:true,
  291. uri:path,
  292. name:'img_'+ this.$global.server.miniappCode +'_'+Date.now()
  293. })
  294. if(promiseObj){
  295. if(idx==1){
  296. this.formData.idCardFrontImage = promiseObj[0].path
  297. }else if(idx==2){
  298. this.formData.idCardBackImage = promiseObj[0].path
  299. }else if(idx==3){
  300. this.formData.organizeIcon = promiseObj[0].path
  301. }
  302. }
  303. },
  304. chooseImgs(idx) {
  305. uni.chooseImage({
  306. count: 1, //默认9
  307. sizeType: ["original", "compressed"], //可以指定是原图还是压缩图,默认二者都有
  308. sourceType: ["album", "camera"], //从相册选择
  309. success: res => {
  310. let tempPaths = res.tempFilePaths;
  311. this.uploadImg(tempPaths[0],idx);
  312. // let imgList = this.imgList.slice(0)
  313. // tempPaths.forEach((itemPath)=>{
  314. // imgList.push({
  315. // path:itemPath
  316. // })
  317. // })
  318. // this.imgList = imgList
  319. // this.status = this.status || []
  320. // for(let o of tempPaths){
  321. // this.status.push('')
  322. // }
  323. this.$forceUpdate()
  324. },
  325. fail: res => {
  326. console.warn(res.errormsg || "取消选择");
  327. },
  328. complete: () => {
  329. this.isLoading = false;
  330. }
  331. });
  332. },
  333. onLoadPage() {
  334. this.formData.id = this.$auth.getMemberId();
  335. this.formData.storeId = this.$global.server.storeId;
  336. },
  337. }
  338. }
  339. </script>
  340. <style lang="scss" scoped>
  341. .container {
  342. padding-top: 20rpx;
  343. background-color: #F6F4F5;
  344. width: 100vw;
  345. height: 100vh;
  346. font-family: 'PingFang-SC-Bold';
  347. }
  348. .topView{
  349. margin-left: 20rpx;
  350. width: 709rpx;
  351. // height:585rpx;
  352. background-color: #ffffff;
  353. border-radius: 20rpx;
  354. }
  355. .label1View{
  356. margin-left: 24rpx;
  357. text{
  358. color:#333333;
  359. font-size: 30rpx;
  360. font-weight: bold;
  361. }
  362. }
  363. .nameView{
  364. min-height: 90upx;
  365. align-items: center;
  366. display:flex;
  367. text{
  368. margin-left:20rpx;
  369. color:#666666;
  370. font-size:24rpx;
  371. }
  372. input{
  373. width:500rpx;
  374. color:#666666;
  375. font-size:24rpx;
  376. margin-left: 20rpx;
  377. }
  378. .timeCenter{
  379. font-size:24rpx;
  380. margin-left: 20rpx;
  381. }
  382. .time{
  383. color:#666666;
  384. font-size:24rpx;
  385. margin-left: 20rpx;
  386. }
  387. }
  388. .line{
  389. width: 660.4rpx;
  390. margin-left: 24.3rpx;
  391. background-color: #EEEEEE;
  392. height: 2rpx;
  393. }
  394. .cameraViewBg{
  395. margin-top: 37rpx;
  396. display: flex;
  397. flex-direction: row;
  398. text{
  399. margin-top: 10rpx;
  400. margin-left:20rpx;
  401. color:#666666;
  402. font-size:24rpx;
  403. }
  404. .cameraView{
  405. display: flex;
  406. flex-direction: row;
  407. width: 550rpx;
  408. margin-left: 20rpx;
  409. view{
  410. justify-content: center;
  411. text{
  412. margin-top: 10rpx;
  413. color:#666666;
  414. font-size:24rpx;
  415. display: flex;
  416. justify-content: center;
  417. align-items: center;
  418. }
  419. }
  420. }
  421. }
  422. .btnView{
  423. margin-top: 100rpx;
  424. width: 100vw;
  425. display: flex;
  426. flex-direction: row;
  427. align-items: center;
  428. .btn{
  429. width: 247rpx;
  430. height:88rpx;
  431. background-color: $dt-color-primary;
  432. border-radius: 15rpx;
  433. padding-top: 5rpx;
  434. margin-left: 79rpx;
  435. text-align: center;
  436. text{
  437. line-height:88rpx ;
  438. color:#ffffff;
  439. font-size: 30rpx;
  440. }
  441. }
  442. .btn1{
  443. margin-left: 104rpx;
  444. width: 247rpx;
  445. height:88rpx;
  446. background-color: #ffffff;
  447. border-radius: 15rpx;
  448. padding-top: 5rpx;
  449. text-align: center;
  450. text{
  451. line-height:88rpx ;
  452. color:#999999;
  453. font-size: 30rpx;
  454. }
  455. }
  456. }
  457. </style>