daikexiadan

代客下单-短租自驾

  1. 代客下单valetOrdersCtrl清除需要的缓存
1
2
//用车人号码
$window.localStorage['notifyTel_ZJ'] = '';
1
2
//判断缓存里是否有用车人电话
$scope.carUser.mobile_phone =$window.localStorage['notifyTel_ZJ']|| $scope.carUser.mobile_phone ;
1
2
//用车电话放入缓存
$window.localStorage['notifyTel_ZJ'] = $('#notifyTel_ZJ').val();

目的是修改电话号码时存到缓存

在HTML5中,本地存储是一个window的属性

存储数据的方法就是直接给window.localStorage添加一个属性:
例如:window.localStorage.a 或者 window.localStorage[“a”]

datatimepicker

datetimepicker 时间插件箭头无法显示和input里的图标不显示

1
2
3
4
5
<div class="input-group date"> -->
<!-- 设置input为只读(readonly)状态,不能修改,可以拷贝 -->
<input type="text" size="16" value="" readonly class="form-control">
<span class="add-on"><i class="icon-th"></i></span>
</div>
1
2
3
$('.form_datetime').datetimepicker({
format: 'yyyy-mm-dd hh:ii'
});

解决办法一:
http://eonasdan.github.io/bootstrap-datetimepicker/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<h3>Default component</h3>
<div class="container">
<div class="row">
<div class='col-sm-6'>
<div class="form-group">
<div class='input-group date' id='datetimepicker1'>
<input type='text' class="form-control"/>
<span class="input-group-addon">
<span class="glyphicon glyphicon-calendar"></span>
</span>
</div>
</div>
</div>
</div>
</div>
1
2
3
$(function() {
$('#datetimepicker1').datetimepicker();
});

error

关于错误提示总结

  1. order.controller.js:1172 Uncaught SyntaxError: Unexpected identifier

  2. ionic.bundle.js:20434 Error: [ng:areq] Argument ‘addsijiCtrl’ is not a function, got undefined

标点符号有误,语法错误,单词拼写

司机APP端更改代客下单出发地和目的地

司机APP端更改代客下单出发地和目的地

  1. 登陆荣益租车 http://172.16.100.162/gov/Area/index.php
    找到从业人员信息,职务(驾驶员),登陆司机端APP;
    vip-代客下单,分配登陆司机,找到订单详情页面:order.html

ng-if 里的order.business_id 控制下车状态

1
2
3
4
5
<div class="center" ng-if="order.business_id<5"></div>
<div class="right" ng-if="order.business_id<5">
<span ng-click="showAddress(order.aboard2)" class="Place">{{order.aboard2||'无'}}</span>
<img src="img/imge/dibiao.png">
</div>
  1. filter.js 里定义了不同下单的状态
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
.filter('businessName', function() {
return function(input) {
switch (input) {
case '1':
return '接机';
case '2':
return '送机';
case '3':
return '接火车';
case '4':
return '送火车';
case '5':
return '半日租';
case '6':
return '代驾日租';
case '7':
return '代驾时租';
case '8':
return '自驾日租';
case '19':
return '自驾时租';
default:break;
}
};
})
  1. 自定义Filter:
1
2
3
4
5
6
<ion-item class="order-list">
<div class="left">{{(order.business_id | businessName) || '---'}}</div>
<div class="center" ng-if='order.business_id>=3' >{{order.train_num|| '---'}}</div>
<div class="center" ng-if='order.business_id<=2'>{{order.flight_num|| '---'}}</div>
<div class="right">{{order.start_at | data}}</div>
</ion-item>

order.business_id 传入的数字以 businessName 作为筛选条件。或者显示’—‘

订单审核

订单审核(点击通过/不通过按钮)

  1. 找到订单审核按钮页面orderxq.html,有两个按钮(通过和不通过,点击确认或者取消执行)
1
2
<button type="button" class="button button-color" ng-if="is_approval" ng-click="auditOrder(orderDetails.order_id,2)" style="background:#EB4C0F!important;">通过</button>
<button type="button" class="button button-color" ng-if="is_approval" ng-click="auditOrder(orderDetails.order_id,3)" style="background:#EB4C0F!important;">不通过</button>
  1. 找到order.controller.js的订单详情对应控制器OrderxqCtrl写页面上对应的ng-click=”auditOrder(orderDetails.order_id,3)” 函数

  2. auditOrder函数里传入两个参数(orderDetails.order_id,3)接受(id,type): approval=2通过/approval=3不通过

1
2
$scope.auditOrder = function(id,type) {
}

对应点击确定时候调用接口传入得参数:

1
2
3
4
5
var param = {
verify: $window.localStorage['verify'],//验证登录身份
order_id: id,
approval: type
}
  1. 点击确定时执行onTap函数()
1
2
onTap: function(e) {
}

$ionicLoading.show()打开

$ionicLoading.hide()隐藏

1
2
3
$ionicLoading.show({
template: "审核订单..."
});

获取提交接口:

1
2
orderDetailsFactory.auditOrder(param).then(function(callback) {
});

orderDetailsFactory 接口 写在services/order.service.js 里定义名字接口auditOrder

1
2
3
4
5
6
7
8
9
10
11
12
auditOrder: function (param) {
return $http({
method:'POST',
url:serverIP+'/app_vip/orders.php?act=order_approval',
data:$.param(param),
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
}).success(function(response) {
return response;
});
}

$window.location.reload(); //加载页面

订单下拉刷新和上拉加载

订单下拉刷新和上拉加载

  1. 找到订单最外层页面 tabs.html 包括:首页-订单-设置
    找到“订单”
1
2
3
<ion-tab title="订单" icon-off="ion-ios-speedometer-outline" icon-on="ion-ios-speedometer" href="#/tab/orderlist">
<ion-nav-view name="tab-orderlist"></ion-nav-view>
</ion-tab>
  1. 创建订单下所包含的页面 tab-orderlist.html加载订单包括下拉刷新和上拉加载

  2. 下拉刷新:ion-refresher
    使用指令ion-refresher可以为滚动容器(ion-scroll或ion-content)增加 拉动刷新/pull-to-refresh的功能:

1
2
<ion-refresher on-refresh="doRefresh()" pulling-text="下拉刷新..." refreshing-icon="ion-load-a">
</ion-refresher>

把它作为ionContent 或 ionScroll元素的第一个子元素。

注意在刷新完毕后,应当使用作用域的$broadcast()方法通知框架:
当刷新完成时,从你的控制器中广播($broadcast)出 ‘scroll.refreshComplete’事件。

on-refresh=”doRefresh()”

当用户向下拉动足够的距离并松开时,执行此表达式
当用户下拉到一定程度然后开始刷新时触发。

找到 orderlistCtrl:

1
2
3
4
$scope.doRefresh = function() {
param.page = 1;//加载1页
getList(param);//请求列表(传入参数)
}

创建的参数param:

1
2
3
4
5
var param = {
verify:$window.localStorage['verify'], //身份验证
user_id:$window.localStorage['user_id'],
page: 1 //传入页数
};

pulling-text=”下拉刷新…”

当用户下拉时显示的文字。

4.上拉加载更多

1
2
<ion-infinite-scroll ng-if="isLoadMore" on-infinite="loadMore()" class="carShar-loadMore" >
</ion-infinite-scroll>

当没有更多数据加载时,就可以用一个简单的方法阻止无限滚动 ng-if=”isLoadMore”

1
$scope.isLoadMore = true;

//广播消息,通知上推加载更多的代码执行完毕
$scope.$broadcast(‘scroll.infiniteScrollComplete’);

$scope.$broadcast(“scoll.refreshComplete”);

订单状态不受时间限制

订单状态不受时间限制

  1. 订单主页 index.html 当前订单绑定 ng-click时间传入参数(item)

    1
    <ion-item class='item yr-name' ng-repeat="item in todayList" ng-click="detail(item)"></ion-item>
  2. 状态页面 order.html (不受时间限制,显示点击状态)
    控制状态显示的是‘服务用车’的 button5.state

    1
    2
    <li style="margin-top:10px;" ng-class="{active:!button5.state}" class=""> <button class="ser-btn" ng-click="start()" ng-disabled="button5.state" ng-if="button2.state||!button1.state">
    </li>
  3. 控制该页面的 order.controllers.js 更改 judgeState();

    1
    judgeState($stateParams.order_start_time); //根据订单时间判断是否可以出车

judgeState()代码:

1
2
3
4
5
function judgeState(time) {
// if (moment(time).diff(moment(), 'm') > 240) {
// $scope.button5.state = true;// }
return true
}

注意:if()被禁止后,状态可更改为可点击状态。

judgeState()函数

if 里的 moment(time) 为下单时间; moment() 为当前时间

CSS水平居中总结

CSS水平居中总结

行内元素

如果被设置元素为文本、图片等行内元素时,水平居中是通过给父元素设置 text-align:center 来实现的。

html代码:

1
2
3
<body>
<div class="txtCenter">我想要在父容器中水平居中显示。</div>
</body>

css代码:

1
2
3
4
5
<style>
.txtCenter{
text-align:center;
}
</style>

块状元素

定宽块状元素

定宽块状元素:块状元素的宽度width为固定值。

满足定宽和块状两个条件的元素是可以通过设置“左右margin”值为“auto”来实现居中的。

html代码:

1
2
3
<body>
<div>我是定宽块状元素,哈哈,我要水平居中显示。</div>
</body>

css代码:

1
2
3
4
5
6
7
<style>
div{
border:1px solid red;/*为了显示居中效果明显为 div 设置了边框*/
width:200px;/*定宽*/
margin:20px auto;/* margin-left 与 margin-right 设置为 auto */
}
</style>

也可以写成:

1
2
margin-left:auto;
margin-right:auto;

注意:元素的“上下 margin” 是可以随意设置的。

|