editWhite.vue 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282
  1. <template>
  2. <view class="container">
  3. <u-navbar title="编辑会员车辆" :background="{backgroundColor: '#ffffff'}" class="top-navbar" title-size="30">
  4. <view slot="right" class="my-nav-right" @tap="delHandler" v-if="isUpdate"><u-icon name="trash" size="40" color="#2979ff"></u-icon></view>
  5. </u-navbar>
  6. <u-form :model="white" ref="uForm" style="background-color: #ffffff;" :label-style="formLabelCss" label-width="180">
  7. <u-form-item label="持有人"><u-input v-model="white.memberName" placeholder="姓名或单位名"/></u-form-item>
  8. <u-form-item label="持有人电话*" prop="memberPhone"><u-input v-model="white.memberPhone" placeholder="联系电话"/></u-form-item>
  9. <u-form-item label="车牌号码*" prop="memberCarNum"><u-input v-model="white.memberCarNum" placeholder="完整车牌号码"/></u-form-item>
  10. <u-form-item label="使用场所*" prop="parkingName">
  11. <u-input v-model="white.parkingName" type="select" @click="parkSelShow = true" placeholder="选择可使用的停车场"/>
  12. </u-form-item>
  13. <u-form-item label="使用期限*">
  14. <!-- <u-input :value="expireDateRange" type="select" @click="showCalendar = true;" placeholder="选择起始截止日期"/> -->
  15. </u-form-item>
  16. <u-form-item prop="memberStartTime">
  17. <u-input type="select" @click="timePickShow = true;timePickFor='memberStartTime';" placeholder="选择起始时间" :value="white.memberStartTime"/>
  18. </u-form-item>
  19. <u-form-item prop="memberEndTime">
  20. <u-input type="select" @click="timePickShow = true;timePickFor='memberEndTime';" placeholder="选择截止时间" :value="white.memberEndTime"/>
  21. </u-form-item>
  22. <u-form-item label="类型">
  23. <text>{{white.memberType==0?'充电附赠':(white.memberType==1?'正式会员':'')}}</text>
  24. </u-form-item>
  25. </u-form>
  26. <u-picker mode="selector" v-model="parkSelShow" :range="myParkSites" range-key="parking_name" @confirm="confirmPark"></u-picker>
  27. <u-picker mode="time" v-model="timePickShow" :params="timePickParams" @confirm="confirmTimePick"></u-picker>
  28. <u-calendar v-model="showCalendar" mode="range" @change="changeCalendar"></u-calendar>
  29. <view class="btn-bar">
  30. <u-button type="primary" style="flex:2;" :disabled="!(white.memberCarNum&&white.parkingName&&white.memberPhone&&white.memberStartTime)" @click="saveData">保存</u-button>
  31. </view>
  32. </view>
  33. </template>
  34. <script>
  35. import * as api from '@/apis/whiteBill.js'
  36. export default {
  37. data() {
  38. return {
  39. formLabelCss:{
  40. 'color':'#7d7d7d'
  41. },
  42. isUpdate:false,
  43. white:{
  44. memberName:'',
  45. memberPhone:'',
  46. memberCarNum:'',
  47. parkingName:'',
  48. memberStartTime:'',
  49. memberEndTime:'',
  50. parkId:'',
  51. memberType:null
  52. },
  53. timePickShow:false,
  54. parkSelShow:false,
  55. myParkSites:[],
  56. showCalendar:false,
  57. timePickFor:'',
  58. timePickParams:{
  59. year: true,
  60. month: true,
  61. day: true,
  62. hour: true,
  63. minute: true,
  64. second: true
  65. },
  66. rules:{
  67. memberPhone:[
  68. {
  69. pattern: /\d{11}/,
  70. message: '请输入有效的持有人电话',
  71. trigger: 'blur'
  72. }
  73. ],
  74. memberCarNum:[
  75. {
  76. required:true,
  77. message: '请输入有效的车牌号码',
  78. trigger: 'blur'
  79. }
  80. ],
  81. parkingName:[
  82. {
  83. required:true,
  84. message: '请选择一个停车场',
  85. trigger: 'blur'
  86. }
  87. ],
  88. memberStartTime:[
  89. {
  90. required:true,
  91. message: '请选择一个起始时间',
  92. trigger: 'blur'
  93. }
  94. ],
  95. memberEndTime:[
  96. {
  97. required:true,
  98. message: '请选择一个截止时间',
  99. trigger: 'blur'
  100. }
  101. ]
  102. }
  103. }
  104. },
  105. onReady() {
  106. this.$refs.uForm.setRules(this.rules);
  107. if(!this.isUpdate){
  108. document.querySelectorAll('.uni-page-head .uni-page-head-ft .uni-page-head-btn')[0].querySelector('.uni-btn-icon').innerText='';
  109. }
  110. },
  111. onLoad(opts){
  112. this.myParkSites=api.getMyParkSites();
  113. if(opts.id!=null){
  114. this.loadDate(opts.id);
  115. this.isUpdate=true;
  116. }
  117. else{
  118. }
  119. },
  120. methods: {
  121. confirmPark(data){
  122. let sel=this.myParkSites[data[0]];
  123. this.white.parkingName=sel.parking_name;
  124. this.white.parkId=sel.park_id;
  125. },
  126. confirmTimePick(date){
  127. console.log(date)
  128. if(this.timePickFor&&this.timePickFor!=''){
  129. this.white[this.timePickFor]=date.year+"-"+date.month+'-'+date.day+" "+date.hour+":"+date.minute+":"+date.second;
  130. }
  131. },
  132. changeCalendar(e){
  133. this.white.memberStartTime=e.startDate;
  134. this.white.memberEndTime=e.endDate;
  135. },
  136. loadDate(id){
  137. uni.showLoading({
  138. title:'加载中...'
  139. });
  140. api.getOne(id).then(resp => {
  141. console.log(resp)
  142. uni.hideLoading();
  143. if(!resp.success){
  144. return;
  145. }
  146. //this.memberRecord=resp.data;
  147. let {memberName,memberPhone,memberCarNum,parkingName,memberStartTime,memberEndTime,parkId,memberType,id}=resp.data;
  148. this.white={memberName,memberPhone,memberCarNum,parkingName,memberStartTime,memberEndTime,parkId,memberType,id};
  149. console.log(this.white);
  150. }).catch(error => {
  151. uni.hideLoading();
  152. });
  153. },
  154. saveData(){
  155. this.$refs.uForm.validate(valid => {
  156. if(!valid){
  157. console.log('验证失败');
  158. return;
  159. }
  160. });
  161. let apifun=this.isUpdate?api.saveForUpdate:api.saveForAdd;
  162. uni.showLoading({
  163. title:'保存中...'
  164. });
  165. let submitData={...this.white};
  166. delete submitData['memberType'];
  167. console.log(this.isUpdate);
  168. apifun(submitData).then(resp => {
  169. console.log(resp)
  170. uni.hideLoading();
  171. if(!resp.success){
  172. uni.showToast({
  173. title: resp.msg||'操作失败',
  174. icon:'none'
  175. });
  176. }
  177. else{
  178. uni.showToast({
  179. title: '操作成功',
  180. icon:'success'
  181. });
  182. setTimeout(function(){
  183. uni.$emit('reloadWhiteList');
  184. uni.navigateBack();
  185. },1000);
  186. }
  187. }).catch(error => {
  188. uni.hideLoading();
  189. });
  190. },
  191. delHandler(id){
  192. if(!this.white.id){
  193. return;
  194. }
  195. api.del(this.white.id).then(resp => {
  196. if(!resp.success){
  197. uni.showToast({
  198. title: resp.msg||'操作失败',
  199. icon:'none'
  200. });
  201. }
  202. else{
  203. uni.showToast({
  204. title: '操作成功',
  205. icon:'success'
  206. });
  207. setTimeout(function(){
  208. uni.$emit('reloadWhiteList');
  209. uni.navigateBack();
  210. },1000);
  211. }
  212. }).catch(error => {
  213. });
  214. }
  215. }
  216. /* computed:{
  217. expireDateRange(){
  218. return this.white.memberStartTime?(this.white.memberStartTime+' 至 '+this.white.memberEndTime):'';
  219. }
  220. } */
  221. }
  222. </script>
  223. <style>
  224. page{
  225. background-color: #f4f4f4;
  226. font-family: '华文行楷';
  227. height: 100%;
  228. }
  229. .my-nav-right{
  230. margin:0rpx 20rpx;
  231. }
  232. .u-form-item{
  233. padding:10rpx 20rpx;
  234. }
  235. .btn-bar{
  236. margin:40rpx 0rpx;
  237. padding:0rpx 20rpx;
  238. display: flex;
  239. flex-flow: row nowrap;
  240. justify-content: center;
  241. align-items: center;
  242. }
  243. .custom-btn{
  244. flex:1;
  245. border-top-right-radius: 20rpx !important;
  246. border-bottom-right-radius: 0rpx;
  247. }
  248. </style>