|  |  |  | 
|---|
|  |  |  | <script> | 
|---|
|  |  |  | import { mapState, mapMutations } from 'vuex'; | 
|---|
|  |  |  | export default { | 
|---|
|  |  |  | onShow() {}, | 
|---|
|  |  |  | methods: {} | 
|---|
|  |  |  | // created() { | 
|---|
|  |  |  | //     uni.loadFontFace({ | 
|---|
|  |  |  | //         family: 'siYuanLight', // 字体名称,可以自定义 | 
|---|
|  |  |  | //         source: 'url("/utils/fonts/siyuan.OTF")', // 字体文件路径 | 
|---|
|  |  |  | //         success() { | 
|---|
|  |  |  | //             console.log('字体加载成功'); | 
|---|
|  |  |  | //         }, | 
|---|
|  |  |  | //         fail() { | 
|---|
|  |  |  | //             console.log('字体加载失败'); | 
|---|
|  |  |  | //         } | 
|---|
|  |  |  | //     }); | 
|---|
|  |  |  | // } | 
|---|
|  |  |  | onHide() { | 
|---|
|  |  |  | console.log('appvue隐藏后台'); | 
|---|
|  |  |  | this.changeisconnect(false); | 
|---|
|  |  |  | if (!this.globalisconnect) { | 
|---|
|  |  |  | uni.switchTab({ | 
|---|
|  |  |  | url: '/pages/tabbar-page/index-tabbar/index-tabbar' | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | methods: { | 
|---|
|  |  |  | ...mapMutations(['changeisconnect']) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | computed: { | 
|---|
|  |  |  | ...mapState(['globalisconnect']) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | </script> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | @import '@/uni_modules/uview-ui/index.scss'; | 
|---|
|  |  |  | @font-face { | 
|---|
|  |  |  | font-family: siYuanLight; | 
|---|
|  |  |  | src: url('https://mx.jzeg.cn:9095/appimg/fonts/siyuan.OTF'); | 
|---|
|  |  |  | src: url('https://mx.jzeg.cn:9095/appimg/fonts/siyuannormal.OTF'); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | @font-face { | 
|---|
|  |  |  | font-family: weighting; | 
|---|
|  |  |  | 
|---|
|  |  |  | body { | 
|---|
|  |  |  | font-family: siYuanLight, sans-serif; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // @font-face { | 
|---|
|  |  |  | //     font-family: 'weighting'; | 
|---|
|  |  |  | //     src: url('./utils/fonts/weighing.TTF'); | 
|---|
|  |  |  | // } | 
|---|
|  |  |  | </style> | 
|---|
|  |  |  | 
|---|
|  |  |  | "appid": "wx4a62fc1684c429a9", | 
|---|
|  |  |  | "permission": { | 
|---|
|  |  |  | "scope.userFuzzyLocation": { | 
|---|
|  |  |  | "desc": "你的位置信息将用于小程序位置接口的效果展示" | 
|---|
|  |  |  | "desc": "你的位置信息将用于小程序定位" | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | "optimization": { | 
|---|
|  |  |  | 
|---|
|  |  |  | "enablePullDownRefresh": false | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ,{ | 
|---|
|  |  |  | }, { | 
|---|
|  |  |  | "path" : "pages/customer-page/customer-my/userMange/userManageEdit/userManageEdit", | 
|---|
|  |  |  | "style" : | 
|---|
|  |  |  | { | 
|---|
|  |  |  | "style": { | 
|---|
|  |  |  | "navigationBarTitleText": "", | 
|---|
|  |  |  | "enablePullDownRefresh": false | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | "path": "forward/forward", | 
|---|
|  |  |  | "style": { | 
|---|
|  |  |  | "navigationBarTitleText": "转发", | 
|---|
|  |  |  | "enablePullDownRefresh": false | 
|---|
|  |  |  | "enablePullDownRefresh": false, | 
|---|
|  |  |  | "navigationStyle": "custom" | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, { | 
|---|
|  |  |  | "path": "message/message", | 
|---|
|  |  |  | 
|---|
|  |  |  | }, { | 
|---|
|  |  |  | "path": "faYunstatisticsDetails/faYunstatisticsDetails", | 
|---|
|  |  |  | "style": { | 
|---|
|  |  |  | "navigationBarTitleText": "发运详情", | 
|---|
|  |  |  | "enablePullDownRefresh": false | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }    ,{ | 
|---|
|  |  |  | "path" : "mapRoute/mapRoute", | 
|---|
|  |  |  | "style" : | 
|---|
|  |  |  | { | 
|---|
|  |  |  | "navigationBarTitleText": "", | 
|---|
|  |  |  | "enablePullDownRefresh": false | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }] | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ] | 
|---|
|  |  |  | }, { | 
|---|
|  |  |  | "root": "pages/driver-page/appointment", | 
|---|
|  |  |  | "pages": [{ | 
|---|
|  |  |  | 
|---|
|  |  |  | <view class="top-title">发运计划详情</view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="middle-container"> | 
|---|
|  |  |  | <view class="dept-name" v-show="deptName">{{ deptName }}({{ coalName }})</view> | 
|---|
|  |  |  | <view class="dept-name"> | 
|---|
|  |  |  | {{ deptName }} | 
|---|
|  |  |  | <text v-show="deptName">({{ coalName }})</text> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="dept-num"> | 
|---|
|  |  |  | <text | 
|---|
|  |  |  | style="font-size: 46rpx; | 
|---|
|  |  |  | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="block-top"> | 
|---|
|  |  |  | <combined-title title="提煤单详情"></combined-title> | 
|---|
|  |  |  | <combined-title title="提煤单历史"></combined-title> | 
|---|
|  |  |  | <view class="total"> | 
|---|
|  |  |  | 总净重 | 
|---|
|  |  |  | <text>{{ total || 0 }}</text> | 
|---|
|  |  |  | 
|---|
|  |  |  | <view class="empty-pointer" v-if="!yyDailyList">暂无更多数据</view> | 
|---|
|  |  |  | <view class="main-block"> | 
|---|
|  |  |  | <view class="main-container"> | 
|---|
|  |  |  | <view class="main-container_content" v-for="(item, index) in yyDailyList" :key="index" @click="showMore(index)"> | 
|---|
|  |  |  | <view class="main-container_content" v-for="(item, index) in yyDailyList" :key="index" @click="showMore(item)"> | 
|---|
|  |  |  | <view class="arrow-icon"><u-icon name="arrow-right" size="30" color="#999999"></u-icon></view> | 
|---|
|  |  |  | <view class="divider"><u-divider></u-divider></view> | 
|---|
|  |  |  | <view class="first-line"> | 
|---|
|  |  |  | 
|---|
|  |  |  | delta: 1 | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | showMore(index) { | 
|---|
|  |  |  | showMore(item) { | 
|---|
|  |  |  | uni.navigateTo({ | 
|---|
|  |  |  | url: `/pages/customer-page/customer-index/fayunPlanDetails/fayunPlanMore/fayunPlanMore?orderPlanId=${this.orderPlanId}&index=${index}` | 
|---|
|  |  |  | url: `/pages/customer-page/customer-index/fayunPlanDetails/fayunPlanMore/fayunPlanMore?orderPlanId=${this.orderPlanId}&id=${item.id}` | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | init() { | 
|---|
|  |  |  | 
|---|
|  |  |  | position: relative; | 
|---|
|  |  |  | top: vww(54); | 
|---|
|  |  |  | .dept-name { | 
|---|
|  |  |  | min-width: 100rpx; | 
|---|
|  |  |  | font-size: 32rpx; | 
|---|
|  |  |  | font-weight: normal; | 
|---|
|  |  |  | color: #ffffff; | 
|---|
|  |  |  | 
|---|
|  |  |  | <view class="body-container"> | 
|---|
|  |  |  | <view class="container-block"> | 
|---|
|  |  |  | <view class="">皮重</view> | 
|---|
|  |  |  | <view class="">{{ yyDailyList.skin || '' }}</view> | 
|---|
|  |  |  | <view class="">{{ yyDailyList.skin || 0 }}</view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="body-container"> | 
|---|
|  |  |  | <view class="container-block"> | 
|---|
|  |  |  | <view class="">毛重</view> | 
|---|
|  |  |  | <view class="">{{ yyDailyList.hair || '' }}</view> | 
|---|
|  |  |  | <view class="">{{ yyDailyList.hair || 0 }}</view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="body-container"> | 
|---|
|  |  |  | <view class="container-block"> | 
|---|
|  |  |  | <view class="">净重</view> | 
|---|
|  |  |  | <view class="">{{ yyDailyList.clean || '' }}</view> | 
|---|
|  |  |  | <view class="">{{ yyDailyList.clean || 0 }}</view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="body-container"> | 
|---|
|  |  |  | <view class="container-block"> | 
|---|
|  |  |  | <view class="">订单剩余量</view> | 
|---|
|  |  |  | <view class="">{{ yyDailyList.allowance || '' }}</view> | 
|---|
|  |  |  | <view class="">{{ yyDailyList.allowance || 0 }}</view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="body-container"> | 
|---|
|  |  |  | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="origin-info" v-if="yyDailyList.orderType == '外购' || yyDailyList.orderType == '内购' || yyDailyList.orderType == '转出'"> | 
|---|
|  |  |  | <combined-title title="原发信息"></combined-title> | 
|---|
|  |  |  | <view class="body-container"> | 
|---|
|  |  |  | <view class="container-block"> | 
|---|
|  |  |  | <view class="">皮重</view> | 
|---|
|  |  |  | <view class="">{{ yyDailyList.skinTwo || 0 }}</view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="body-container"> | 
|---|
|  |  |  | <view class="container-block"> | 
|---|
|  |  |  | <view class="">毛重</view> | 
|---|
|  |  |  | <view class="">{{ yyDailyList.hairTwo || 0 }}</view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="body-container"> | 
|---|
|  |  |  | <view class="container-block"> | 
|---|
|  |  |  | <view class="">净重</view> | 
|---|
|  |  |  | <view class="">{{ yyDailyList.cleanTwo || 0 }}</view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | 
|---|
|  |  |  | combinedTitle | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | onLoad(params) { | 
|---|
|  |  |  | this.orderPlanId = params.orderPlanId; | 
|---|
|  |  |  | this.index = params.index; | 
|---|
|  |  |  | this.id = params.id; | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | onShow() { | 
|---|
|  |  |  | this.GetOrderPlanDetail(); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | data() { | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | orderPlanId: '', | 
|---|
|  |  |  | id: '', | 
|---|
|  |  |  | yyDailyList: {}, | 
|---|
|  |  |  | orderPlanDetail: {}, | 
|---|
|  |  |  | coalStatus: ['领取', '预约', '签到', '入场', '称皮', '称毛', '离场', '入磅房', '出磅房', '入煤仓', '出煤仓', '放空', '作废', '入场申请', '进入场院'], | 
|---|
|  |  |  | 
|---|
|  |  |  | uni.showLoading({ | 
|---|
|  |  |  | title: '加载中...' | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | this.$reqGet('xiangqingList', { orderPlanId: this.orderPlanId }).then(res => { | 
|---|
|  |  |  | this.$reqGet('getTakeCoal', { takeCoalId: this.id }).then(res => { | 
|---|
|  |  |  | if (res.code == 0) { | 
|---|
|  |  |  | this.orderPlanDetail = res.data; | 
|---|
|  |  |  | this.yyDailyList = res.data.yyDailyList.filter((v, i) => i == this.index)[0]; | 
|---|
|  |  |  | this.yyDailyList = res.data; | 
|---|
|  |  |  | console.log(this.yyDailyList); | 
|---|
|  |  |  | uni.hideLoading(); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | 
|---|
|  |  |  | .main { | 
|---|
|  |  |  | width: 100%; | 
|---|
|  |  |  | margin-top: vww(10); | 
|---|
|  |  |  | @include flex justify-content: center; | 
|---|
|  |  |  | color: #303030; | 
|---|
|  |  |  | @include flex; | 
|---|
|  |  |  | flex-direction: column; | 
|---|
|  |  |  | .main-body { | 
|---|
|  |  |  | width: 690rpx; | 
|---|
|  |  |  | height: 1062rpx; | 
|---|
|  |  |  | 
|---|
|  |  |  | @include flex flex-direction: column; | 
|---|
|  |  |  | align-items: flex-start; | 
|---|
|  |  |  | .body-container { | 
|---|
|  |  |  | color: #303030; | 
|---|
|  |  |  | width: 100%; | 
|---|
|  |  |  | height: vww(56); | 
|---|
|  |  |  | border-bottom: vww(1) solid #d6d6d6; | 
|---|
|  |  |  | 
|---|
|  |  |  | border-bottom: none; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .origin-info { | 
|---|
|  |  |  | width: 690rpx; | 
|---|
|  |  |  | min-height: 300rpx; | 
|---|
|  |  |  | margin-top: 20rpx; | 
|---|
|  |  |  | margin-bottom: 20rpx; | 
|---|
|  |  |  | background: #ffffff; | 
|---|
|  |  |  | box-shadow: 0rpx 0rpx 14rpx 0rpx rgba(73, 120, 240, 0.14), 0rpx 7rpx 45rpx 0rpx rgba(73, 120, 240, 0.12); | 
|---|
|  |  |  | border-radius: 20rpx; | 
|---|
|  |  |  | @include flex; | 
|---|
|  |  |  | flex-direction: column; | 
|---|
|  |  |  | align-items: flex-start; | 
|---|
|  |  |  | .body-container { | 
|---|
|  |  |  | width: 100%; | 
|---|
|  |  |  | height: vww(56); | 
|---|
|  |  |  | border-bottom: vww(1) solid #d6d6d6; | 
|---|
|  |  |  | @include flex; | 
|---|
|  |  |  | justify-content: center; | 
|---|
|  |  |  | .container-block { | 
|---|
|  |  |  | width: 94%; | 
|---|
|  |  |  | @include flex; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .uni-table { | 
|---|
|  |  |  | .uni-table-tr { | 
|---|
|  |  |  | padding: 0; | 
|---|
|  |  |  | border: vww(1) solid #c6c6c6; | 
|---|
|  |  |  | .uni-table-th { | 
|---|
|  |  |  | font-size: vww(14); | 
|---|
|  |  |  | height: vww(30); | 
|---|
|  |  |  | line-height: vww(30); | 
|---|
|  |  |  | padding: vww(5) vww(10); | 
|---|
|  |  |  | color: #111111; | 
|---|
|  |  |  | font-weight: 500; | 
|---|
|  |  |  | background: #e2e2e2; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .uni-table-td { | 
|---|
|  |  |  | font-size: vww(14); | 
|---|
|  |  |  | font-weight: 400; | 
|---|
|  |  |  | height: vww(30); | 
|---|
|  |  |  | line-height: vww(30); | 
|---|
|  |  |  | padding: vww(5) vww(10); | 
|---|
|  |  |  | color: #111111; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="card-main" v-for="(value, i) in item.taskCoalList" :key="i" @click="faYunDetail(value.id)"> | 
|---|
|  |  |  | <view class="first-line"> | 
|---|
|  |  |  | <view class="dispatch-receive"> | 
|---|
|  |  |  | <view class="main-information"> | 
|---|
|  |  |  | <view class="sign">装</view> | 
|---|
|  |  |  | <view class="filedname"> | 
|---|
|  |  |  | <text v-if="value.orderType == '外销' || value.orderType == '内销' || value.orderType == '转出'">{{ value.deptName.slice(0, 16) }}</text> | 
|---|
|  |  |  | <text v-else-if="value.orderType == '外购' || value.orderType == '内购' || value.orderType == '转入'"> | 
|---|
|  |  |  | {{ value.customerName.slice(0, 16) }} | 
|---|
|  |  |  | </text> | 
|---|
|  |  |  | <text v-show="value.deptName.length >= 15 || value.customerName.length >= 15">...</text> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="main-divider"></view> | 
|---|
|  |  |  | <view class="point-number">{{ value.clean.toFixed(2) || 0 }}</view> | 
|---|
|  |  |  | <!-- <view class="dispatch-receive"> | 
|---|
|  |  |  | <view v-if="value.orderType == '外销' || value.orderType == '内销' || value.orderType == '转出'" class="container"> | 
|---|
|  |  |  | <view class="dispatch">{{ value.deptName }}</view> | 
|---|
|  |  |  | <view class="receive-icon"></view> | 
|---|
|  |  |  | 
|---|
|  |  |  | <view class="receive-icon"></view> | 
|---|
|  |  |  | <view class="receive">{{ value.deptName }}</view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> --> | 
|---|
|  |  |  | <!-- <view class="point-number">{{ value.clean.toFixed(2) || 0 }}</view> --> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="point-number">{{ value.clean.toFixed(2) || 0 }}</view> | 
|---|
|  |  |  | <view class="first-extra"> | 
|---|
|  |  |  | <view class="main-information"> | 
|---|
|  |  |  | <view class="sign">卸</view> | 
|---|
|  |  |  | <view class="filedname"> | 
|---|
|  |  |  | <text v-if="value.orderType == '外销' || value.orderType == '内销' || value.orderType == '转出'"> | 
|---|
|  |  |  | {{ value.customerName.slice(0, 16) }} | 
|---|
|  |  |  | </text> | 
|---|
|  |  |  | <text v-else-if="value.orderType == '外购' || value.orderType == '内购' || value.orderType == '转入'"> | 
|---|
|  |  |  | {{ value.deptName.slice(0, 16) }} | 
|---|
|  |  |  | </text> | 
|---|
|  |  |  | <text v-show="value.customerName.length >= 15 || value.deptName.length >= 15">...</text> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="second-line"> | 
|---|
|  |  |  | <view class="coal-name"> | 
|---|
|  |  |  | 
|---|
|  |  |  | justify-content: space-between; | 
|---|
|  |  |  | align-items: center; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | @mixin firstLine { | 
|---|
|  |  |  | width: 80%; | 
|---|
|  |  |  | height: vww(68); | 
|---|
|  |  |  | margin: vww(10) vww(16) 0 0; | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | justify-content: space-between; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ::v-deep .toggle-button .u-button { | 
|---|
|  |  |  | width: vww(40); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .card-main { | 
|---|
|  |  |  | width: 100%; | 
|---|
|  |  |  | height: vww(120); | 
|---|
|  |  |  | height: vww(150); | 
|---|
|  |  |  | border-bottom: vww(1) solid #d6d6d6; | 
|---|
|  |  |  | margin-top: vww(12); | 
|---|
|  |  |  | padding-bottom: vww(12); | 
|---|
|  |  |  | 
|---|
|  |  |  | @include flex flex-direction: column; | 
|---|
|  |  |  | align-items: flex-start; | 
|---|
|  |  |  | .first-line { | 
|---|
|  |  |  | width: 94%; | 
|---|
|  |  |  | width: 80%; | 
|---|
|  |  |  | height: vww(32); | 
|---|
|  |  |  | color: #303030; | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | justify-content: space-between; | 
|---|
|  |  |  | align-items: center; | 
|---|
|  |  |  | .dispatch-receive { | 
|---|
|  |  |  | width: 90%; | 
|---|
|  |  |  | .main-information { | 
|---|
|  |  |  | width: 88%; | 
|---|
|  |  |  | height: vww(28); | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | justify-content: space-between; | 
|---|
|  |  |  | justify-content: flex-start; | 
|---|
|  |  |  | align-items: center; | 
|---|
|  |  |  | margin-right: vww(12); | 
|---|
|  |  |  | .container { | 
|---|
|  |  |  | width: 100%; | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | justify-content: space-between; | 
|---|
|  |  |  | align-items: center; | 
|---|
|  |  |  | .sign { | 
|---|
|  |  |  | width: vww(28); | 
|---|
|  |  |  | height: vww(28); | 
|---|
|  |  |  | line-height: vww(28); | 
|---|
|  |  |  | text-align: center; | 
|---|
|  |  |  | background: url('https://mx.jzeg.cn:9095/appimg/image/banner/blueblock.png') no-repeat; | 
|---|
|  |  |  | background-size: contain; | 
|---|
|  |  |  | font-size: 30rpx; | 
|---|
|  |  |  | font-weight: 400; | 
|---|
|  |  |  | color: #ffffff; | 
|---|
|  |  |  | margin-right: vww(20); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .receive-icon { | 
|---|
|  |  |  | width: 62rpx; | 
|---|
|  |  |  | height: 14rpx; | 
|---|
|  |  |  | border-bottom: 3px solid #275fa5; | 
|---|
|  |  |  | position: relative; | 
|---|
|  |  |  | &:after { | 
|---|
|  |  |  | content: ''; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .main-divider { | 
|---|
|  |  |  | width: 548rpx; | 
|---|
|  |  |  | height: 1rpx; | 
|---|
|  |  |  | background: #e3e3e3; | 
|---|
|  |  |  | position: absolute; | 
|---|
|  |  |  | width: 3px; | 
|---|
|  |  |  | height: 10px; | 
|---|
|  |  |  | background-color: #275fa5; | 
|---|
|  |  |  | right: 0; | 
|---|
|  |  |  | transform: rotate(-45deg); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | top: 80rpx; | 
|---|
|  |  |  | left: vww(50); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .point-number { | 
|---|
|  |  |  | width: 20%; | 
|---|
|  |  |  | font-size: 40rpx; | 
|---|
|  |  |  | font-weight: 400; | 
|---|
|  |  |  | color: #f81414; | 
|---|
|  |  |  | position: absolute; | 
|---|
|  |  |  | right: -10rpx; | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | flex-wrap: wrap; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .first-extra { | 
|---|
|  |  |  | @include firstLine; | 
|---|
|  |  |  | height: vww(32); | 
|---|
|  |  |  | .main-information { | 
|---|
|  |  |  | width: 100%; | 
|---|
|  |  |  | height: vww(28); | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | justify-content: flex-start; | 
|---|
|  |  |  | align-items: center; | 
|---|
|  |  |  | .sign { | 
|---|
|  |  |  | width: vww(28); | 
|---|
|  |  |  | height: vww(28); | 
|---|
|  |  |  | line-height: vww(28); | 
|---|
|  |  |  | text-align: center; | 
|---|
|  |  |  | background: url('https://mx.jzeg.cn:9095/appimg/image/banner/redblock.png') no-repeat; | 
|---|
|  |  |  | background-size: contain; | 
|---|
|  |  |  | font-size: 30rpx; | 
|---|
|  |  |  | font-weight: 400; | 
|---|
|  |  |  | color: #ffffff; | 
|---|
|  |  |  | margin-right: vww(20); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .second-line { | 
|---|
|  |  |  | 
|---|
|  |  |  | style="background: url('https://mx.jzeg.cn:9095/appimg/image/banner/statusbutton.png') no-repeat; | 
|---|
|  |  |  | background-size: cover;" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | {{ coalStatus[coalDetailsData.status] }} | 
|---|
|  |  |  | {{ coalStatus[coalDetailsData.status] || '' }} | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="time"> | 
|---|
|  |  |  | 
|---|
|  |  |  | <view class="send-date">{{ coalDetailsData.sendDate }}</view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="coal-code">提煤单编号:  {{ coalDetailsData.code || '' }}</view> | 
|---|
|  |  |  | <view class="order-code">订单编号:     {{ coalDetailsData.orderCode || '' }}</view> | 
|---|
|  |  |  | <view class="order-code">订单编号:       {{ coalDetailsData.orderCode || '' }}</view> | 
|---|
|  |  |  | <view class="weigh-item"> | 
|---|
|  |  |  | <view class="item"> | 
|---|
|  |  |  | <view class="concrete" style="background: url('https://mx.jzeg.cn:9095/appimg/image/banner/skin.png') no-repeat;background-size: cover;">皮</view> | 
|---|
|  |  |  | 
|---|
|  |  |  | <u-button text="入场申请" type="primary" plain @click="rcsqClick" shape="circle"></u-button> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="bottom-button"> | 
|---|
|  |  |  | <u-button text="放空" type="primary" plain @click="evacuation" throttleTime="500" shape="circle"></u-button> | 
|---|
|  |  |  | <u-button text="放空" type="primary" plain @click="evacuation" throttleTime="500" shape="circle" :disabled="!isEvacuation"></u-button> | 
|---|
|  |  |  | <u-button text="呼叫客服" type="primary" plain @click="callCustomerService" shape="circle"></u-button> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | 
|---|
|  |  |  | let date = time.getDate(); | 
|---|
|  |  |  | date = date < 10 ? '0' + date : date; | 
|---|
|  |  |  | return `${year}-${month}-${date}`; | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // | 
|---|
|  |  |  | isEvacuation() { | 
|---|
|  |  |  | return this.coalDetailsData.hair == 0 || this.coalDetailsData.skin == 0; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | methods: { | 
|---|
|  |  |  | 
|---|
|  |  |  | color: #896227; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | &-coalTwo { | 
|---|
|  |  |  | width: 84%; | 
|---|
|  |  |  | margin-top: 20%; | 
|---|
|  |  |  | margin: 20% auto 0; | 
|---|
|  |  |  | font-size: vww(20); | 
|---|
|  |  |  | font-weight: 700; | 
|---|
|  |  |  | text-align: center; | 
|---|
|  |  |  | color: #2e363f; | 
|---|
|  |  |  | view:nth-child(2) { | 
|---|
|  |  |  | margin-top: vww(15); | 
|---|
|  |  |  | font-size: 40px; | 
|---|
|  |  |  | font-size: 30px; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | view:nth-child(3) { | 
|---|
|  |  |  | margin-top: vww(15); | 
|---|
|  |  |  | font-size: 40px; | 
|---|
|  |  |  | font-size: 30px; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | view:nth-child(4) { | 
|---|
|  |  |  | margin-top: vww(15); | 
|---|
|  |  |  | font-size: 40px; | 
|---|
|  |  |  | font-size: 30px; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | &-coalThree { | 
|---|
|  |  |  | margin-top: vww(46); | 
|---|
|  |  |  | margin-top: vww(15); | 
|---|
|  |  |  | font-size: vww(18); | 
|---|
|  |  |  | font-weight: 700; | 
|---|
|  |  |  | text-align: center; | 
|---|
|  |  |  | color: #2e363f; | 
|---|
|  |  |  | view:nth-child(2) { | 
|---|
|  |  |  | margin-top: vww(8); | 
|---|
|  |  |  | margin-top: vww(15); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | &-coalFour { | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | justify-content: center; | 
|---|
|  |  |  | align-items: center; | 
|---|
|  |  |  | margin-top: vww(78); | 
|---|
|  |  |  | position: absolute; | 
|---|
|  |  |  | bottom: 161rpx; | 
|---|
|  |  |  | left: 42.5%; | 
|---|
|  |  |  | image { | 
|---|
|  |  |  | width: vww(52); | 
|---|
|  |  |  | height: vww(52); | 
|---|
|  |  |  | 
|---|
|  |  |  | <view class="first-line"><combined-title title="原发信息"></combined-title></view> | 
|---|
|  |  |  | <view class="second-line"> | 
|---|
|  |  |  | <view class="label-text" :class="{ focusClass: isfocus1 }">皮重</view> | 
|---|
|  |  |  | <view class="input-container" :class="{ inputClass: isfocus1 }"> | 
|---|
|  |  |  | <u--input placeholder="请输入皮重" border="surround" v-model="weighData.coalContactSkin" @focus="inputFocus(1)" @blur="inputBlur"></u--input> | 
|---|
|  |  |  | <view class="input-container" :class="{ inputClass: isfocus1, disabledClass: isInputOrigin }"> | 
|---|
|  |  |  | <u--input | 
|---|
|  |  |  | placeholder="请输入皮重" | 
|---|
|  |  |  | border="surround" | 
|---|
|  |  |  | v-model="weighData.coalContactSkin" | 
|---|
|  |  |  | @focus="inputFocus(1)" | 
|---|
|  |  |  | @blur="inputBlur" | 
|---|
|  |  |  | :disabled="isInputOrigin" | 
|---|
|  |  |  | ></u--input> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="unit" :class="{ focusClass: isfocus1 }">吨</view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="second-line"> | 
|---|
|  |  |  | <view class="label-text" :class="{ focusClass: isfocus2 }">毛重</view> | 
|---|
|  |  |  | <view class="input-container" :class="{ inputClass: isfocus2 }"> | 
|---|
|  |  |  | <u--input placeholder="请输入毛重" border="surround" v-model="weighData.coalContactHair" @focus="inputFocus(2)" @blur="inputBlur"></u--input> | 
|---|
|  |  |  | <view class="input-container" :class="{ inputClass: isfocus2, disabledClass: isInputOrigin }"> | 
|---|
|  |  |  | <u--input | 
|---|
|  |  |  | placeholder="请输入毛重" | 
|---|
|  |  |  | border="surround" | 
|---|
|  |  |  | v-model="weighData.coalContactHair" | 
|---|
|  |  |  | @focus="inputFocus(2)" | 
|---|
|  |  |  | @blur="inputBlur" | 
|---|
|  |  |  | :disabled="isInputOrigin" | 
|---|
|  |  |  | ></u--input> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="unit" :class="{ focusClass: isfocus2 }">吨</view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="second-line"> | 
|---|
|  |  |  | <view class="label-text">净重</view> | 
|---|
|  |  |  | <view class="input-container"><u--input placeholder="请输入净重" border="surround" v-model="coalContactClean"></u--input></view> | 
|---|
|  |  |  | <view class="input-container"><u--input placeholder="净重" border="surround" v-model="coalContactClean" :disabled="isInputOrigin"></u--input></view> | 
|---|
|  |  |  | <view class="unit">吨</view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view v-else style="width: 100%;height: vww(20);"></view> | 
|---|
|  |  |  | <view v-else style="width: 100%;height: 40rpx;"></view> | 
|---|
|  |  |  | <view class="bottom-block"> | 
|---|
|  |  |  | <view class="block-main"> | 
|---|
|  |  |  | <view class="main-information"> | 
|---|
|  |  |  | 
|---|
|  |  |  | <u-button | 
|---|
|  |  |  | type="primary" | 
|---|
|  |  |  | text="确定称重" | 
|---|
|  |  |  | :disabled="realTimeWeigh == 0 || globalinfraredStatus || isweigh" | 
|---|
|  |  |  | :disabled="realTimeWeigh == 0 || globalinfraredStatus || isweigh || isInputOrigin" | 
|---|
|  |  |  | :loading="isConfirmWeighLoading" | 
|---|
|  |  |  | loadingText="确认" | 
|---|
|  |  |  | @click="confirmWeigh" | 
|---|
|  |  |  | ></u-button> | 
|---|
|  |  |  | <u-button type="primary" text="返回加减吨" :disabled="addAndSubtractCoalDisabled" @click="addAndSubtractCoal" class="jiajian"></u-button> | 
|---|
|  |  |  | <u-button type="primary" text="返回加减吨" :disabled="addAndSubtractCoalDisabled" @click="addAndSubtractCoal" class="jiajian" v-if="outBuy"></u-button> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="four" v-if="weighList.orderType !== '外购'">如您需要调整装载货品吨数,请点击返回加减吨</view> | 
|---|
|  |  |  | <!-- <view class="four" v-if="weighList.orderType !== '外购'">如您需要调整装载货品吨数,请点击返回加减吨</view> --> | 
|---|
|  |  |  | <!-- 放空弹窗 --> | 
|---|
|  |  |  | <view class="evacuationModal"> | 
|---|
|  |  |  | <u-modal | 
|---|
|  |  |  | 
|---|
|  |  |  | coalContactHair: 0, | 
|---|
|  |  |  | coalContactSkin: 0 | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 是否填写原发信息 | 
|---|
|  |  |  | isInputOrigin: false, | 
|---|
|  |  |  | takeCoalId: null, | 
|---|
|  |  |  | weighHouseCode: '', | 
|---|
|  |  |  | isConfirmWeighLoading: false, //确定称重按钮 | 
|---|
|  |  |  | 
|---|
|  |  |  | coalContactSkin: '', | 
|---|
|  |  |  | // 聚焦时改变样式 | 
|---|
|  |  |  | isfocus1: false, | 
|---|
|  |  |  | isfocus2: false | 
|---|
|  |  |  | isfocus2: false, | 
|---|
|  |  |  | // 外购第一次称毛重不需要加减吨 | 
|---|
|  |  |  | outBuy: true | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | watch: { | 
|---|
|  |  |  | 
|---|
|  |  |  | // 监听重量变化 | 
|---|
|  |  |  | globalweigh: { | 
|---|
|  |  |  | handler(v) { | 
|---|
|  |  |  | // this.weighData.weigh = this.realTimeWeigh = v; | 
|---|
|  |  |  | // console.log(this.realTimeWeigh, '真实重量改变了'); | 
|---|
|  |  |  | setTimeout(() => { | 
|---|
|  |  |  | this.weighData.weigh = this.realTimeWeigh = v; | 
|---|
|  |  |  | }, 0); | 
|---|
|  |  |  | console.log(this.realTimeWeigh, '真实重量改变了'); | 
|---|
|  |  |  | // setTimeout(() => { | 
|---|
|  |  |  | //     this.weighData.weigh = this.realTimeWeigh = v; | 
|---|
|  |  |  | // }, 0); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | deep: true, | 
|---|
|  |  |  | immediate: true | 
|---|
|  |  |  | 
|---|
|  |  |  | this.weighData.carNo = res.data.carNo; | 
|---|
|  |  |  | this.weighData.tmCode = res.data.code; | 
|---|
|  |  |  | this.weighData.filedId = res.data.filedId; | 
|---|
|  |  |  | if (this.weighList.orderType == '外购' && this.weighList.hair == 0) { | 
|---|
|  |  |  | this.weighData.coalContactHair = res.data.hairTwo ? res.data.hairTwo : 0; | 
|---|
|  |  |  | this.weighData.coalContactSkin = res.data.skinTwo ? res.data.skinTwo : 0; | 
|---|
|  |  |  | if (this.weighList.orderType == '外购') { | 
|---|
|  |  |  | this.firstHairCustomernameShow = true; | 
|---|
|  |  |  | if (this.weighList.hair == 0) { | 
|---|
|  |  |  | this.outBuy = false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (this.weighData.coalContactHair > 0 && this.weighData.coalContactSkin > 0) { | 
|---|
|  |  |  | this.isInputOrigin = true; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | 
|---|
|  |  |  | box-shadow: 0rpx 5rpx 13rpx 0rpx rgba(73, 95, 252, 0.6) !important; | 
|---|
|  |  |  | border-radius: 12rpx !important; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .isInputOrigin { | 
|---|
|  |  |  | background-color: #f4f4fc; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .input-container { | 
|---|
|  |  |  | border: 2px solid #c5c5c5; | 
|---|
|  |  |  | box-shadow: 0rpx 5rpx 13rpx 0rpx #c5c5c5; | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .four { | 
|---|
|  |  |  | margin: vww(10) auto; | 
|---|
|  |  |  | flex: 0.5; | 
|---|
|  |  |  | width: 100%; | 
|---|
|  |  |  | margin-top: vww(5); | 
|---|
|  |  |  | text-align: center; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .secondary-confirmation__main { | 
|---|
|  |  |  | 
|---|
|  |  |  | <view class=""> | 
|---|
|  |  |  | <view class="driver-index"> | 
|---|
|  |  |  | <view class="driver-index-body"> | 
|---|
|  |  |  | <!-- <combined-title title="待领取"></combined-title> --> | 
|---|
|  |  |  | <!-- <u-empty | 
|---|
|  |  |  | mode="data" | 
|---|
|  |  |  | icon="http://cdn.uviewui.com/uview/empty/data.png" | 
|---|
|  |  |  | textSize="30" | 
|---|
|  |  |  | iconSize="1000" | 
|---|
|  |  |  | v-if="driverBillOfLoadingData.list1 ? (driverBillOfLoadingData.list1.length == 0 ? true : false) : true" | 
|---|
|  |  |  | ></u-empty> --> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <!-- 待领取提煤单 --> | 
|---|
|  |  |  | <view class="wait-collection" style="background: url('https://mx.jzeg.cn:9095/appimg/image/banner/diverbanner.png') no-repeat;background-size:contain"></view> | 
|---|
|  |  |  | <view class="collection-form"> | 
|---|
|  |  |  | <view class="collection-form-item" v-for="(item, index) in driverBillOfLoadingData.list1" :key="index"> | 
|---|
|  |  |  | <view class="first-line"> | 
|---|
|  |  |  | <view class="dispatch-receive"> | 
|---|
|  |  |  | <view v-if="item.orderType == '外销' || item.orderType == '内销' || item.orderType == '转出'" class="container"> | 
|---|
|  |  |  | <view class="dispatch">{{ item.deptName || '' }}</view> | 
|---|
|  |  |  | <view class="receive-icon"></view> | 
|---|
|  |  |  | <view class="receive">{{ item.customerNameCopy || '' }}}</view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view v-else-if="item.orderType == '外购' || item.orderType == '内购' || item.orderType == '转入'" class="container"> | 
|---|
|  |  |  | <view class="dispatch">{{ item.customerNameCopy || '' }}</view> | 
|---|
|  |  |  | <view class="receive-icon"></view> | 
|---|
|  |  |  | <view class="receive">{{ item.deptName || '' }}}</view> | 
|---|
|  |  |  | <view class="main-information"> | 
|---|
|  |  |  | <view class="sign">装</view> | 
|---|
|  |  |  | <view class="filedname"> | 
|---|
|  |  |  | <text v-if="item.orderType == '外销' || item.orderType == '内销' || item.orderType == '转出'">{{ item.deptName.slice(0, 16) }}</text> | 
|---|
|  |  |  | <text v-else-if="item.orderType == '外购' || item.orderType == '内购' || item.orderType == '转入'"> | 
|---|
|  |  |  | {{ item.customerNameCopy.slice(0, 16) }} | 
|---|
|  |  |  | </text> | 
|---|
|  |  |  | <text v-show="item.deptName.length >= 15 || item.customerNameCopy.length >= 15">...</text> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="main-divider"></view> | 
|---|
|  |  |  | <view class="point-number"> | 
|---|
|  |  |  | <text class="residue">{{ item.carNum - item.taskNum }}</text> | 
|---|
|  |  |  | <text>/{{ item.carNum }}</text> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="first-extra"> | 
|---|
|  |  |  | <view class="main-information"> | 
|---|
|  |  |  | <view class="sign">卸</view> | 
|---|
|  |  |  | <view class="filedname"> | 
|---|
|  |  |  | <text v-if="item.orderType == '外销' || item.orderType == '内销' || item.orderType == '转出'">{{ item.customerNameCopy.slice(0, 16) }}</text> | 
|---|
|  |  |  | <text v-else-if="item.orderType == '外购' || item.orderType == '内购' || item.orderType == '转入'">{{ item.deptName.slice(0, 16) }}</text> | 
|---|
|  |  |  | <text v-show="item.customerNameCopy.length >= 15 || item.deptName.length >= 15">...</text> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="second-line"> | 
|---|
|  |  |  | <view class="coal-name">{{ item.coalName }}</view> | 
|---|
|  |  |  | <!-- <view class="black-block"><view class="black-bar"></view></view> | 
|---|
|  |  |  | <view class="coal-type">{{ item.orderType }}</view> --> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="third-line"> | 
|---|
|  |  |  | <view class="time-icon"><u-icon name="clock" color="#515151" size="40"></u-icon></view> | 
|---|
|  |  |  | 
|---|
|  |  |  | <view class="main-information"> | 
|---|
|  |  |  | <view class="sign">装</view> | 
|---|
|  |  |  | <view class="filedname"> | 
|---|
|  |  |  | <text v-if="item.orderType == '外销' || item.orderType == '内销' || item.orderType == '转出'">{{ item.deptName }}</text> | 
|---|
|  |  |  | <text v-else-if="item.orderType == '外购' || item.orderType == '内购' || item.orderType == '转入'">{{ item.customerName }}</text> | 
|---|
|  |  |  | <text v-if="item.orderType == '外销' || item.orderType == '内销' || item.orderType == '转出'">{{ item.deptName.slice(0, 16) }}</text> | 
|---|
|  |  |  | <text v-else-if="item.orderType == '外购' || item.orderType == '内购' || item.orderType == '转入'"> | 
|---|
|  |  |  | {{ item.customerName.slice(0, 16) }} | 
|---|
|  |  |  | </text> | 
|---|
|  |  |  | <text v-show="item.deptName.length >= 15 || item.customerName.length >= 15">...</text> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="main-divider"></view> | 
|---|
|  |  |  | <view class="map-icon"> | 
|---|
|  |  |  | <view class="map-icon" @click.stop="skipMap(item)"> | 
|---|
|  |  |  | <view><u-icon name="map" color="#4978F0" size="40"></u-icon></view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | 
|---|
|  |  |  | <view class="main-information"> | 
|---|
|  |  |  | <view class="sign">卸</view> | 
|---|
|  |  |  | <view class="filedname"> | 
|---|
|  |  |  | <text v-if="item.orderType == '外销' || item.orderType == '内销' || item.orderType == '转出'">{{ item.customerName }}</text> | 
|---|
|  |  |  | <text v-else-if="item.orderType == '外购' || item.orderType == '内购' || item.orderType == '转入'">{{ item.deptName }}</text> | 
|---|
|  |  |  | <text v-if="item.orderType == '外销' || item.orderType == '内销' || item.orderType == '转出'">{{ item.customerName.slice(0, 16) }}</text> | 
|---|
|  |  |  | <text v-else-if="item.orderType == '外购' || item.orderType == '内购' || item.orderType == '转入'">{{ item.deptName.slice(0, 16) }}</text> | 
|---|
|  |  |  | <text v-show="item.deptName.length >= 15 || item.customerName.length >= 15">...</text> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="map-icon"> | 
|---|
|  |  |  | <view class="map-icon" @click.stop="skipMap(item)"> | 
|---|
|  |  |  | <view><u-icon name="map" color="#4978F0" size="40"></u-icon></view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | 
|---|
|  |  |  | <view class="main-information"> | 
|---|
|  |  |  | <view class="sign">装</view> | 
|---|
|  |  |  | <view class="filedname"> | 
|---|
|  |  |  | <text v-if="item.orderType == '外销' || item.orderType == '内销' || item.orderType == '转出'">{{ item.deptName }}</text> | 
|---|
|  |  |  | <text v-else-if="item.orderType == '外购' || item.orderType == '内购' || item.orderType == '转入'">{{ item.customerName }}</text> | 
|---|
|  |  |  | <text v-if="item.orderType == '外销' || item.orderType == '内销' || item.orderType == '转出'">{{ item.deptName.slice(0, 16) }}</text> | 
|---|
|  |  |  | <text v-else-if="item.orderType == '外购' || item.orderType == '内购' || item.orderType == '转入'"> | 
|---|
|  |  |  | {{ item.customerName.slice(0, 16) }} | 
|---|
|  |  |  | </text> | 
|---|
|  |  |  | <text v-show="item.deptName.length >= 15 || item.customerName.length >= 15">...</text> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="main-divider"></view> | 
|---|
|  |  |  | <view class="map-icon"> | 
|---|
|  |  |  | <view class="map-icon" @click.stop="skipMap(item)"> | 
|---|
|  |  |  | <view><u-icon name="map" color="#4978F0" size="40"></u-icon></view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | 
|---|
|  |  |  | <view class="main-information"> | 
|---|
|  |  |  | <view class="sign">卸</view> | 
|---|
|  |  |  | <view class="filedname"> | 
|---|
|  |  |  | <text v-if="item.orderType == '外销' || item.orderType == '内销' || item.orderType == '转出'">{{ item.customerName }}</text> | 
|---|
|  |  |  | <text v-else-if="item.orderType == '外购' || item.orderType == '内购' || item.orderType == '转入'">{{ item.deptName }}</text> | 
|---|
|  |  |  | <text v-if="item.orderType == '外销' || item.orderType == '内销' || item.orderType == '转出'">{{ item.customerName.slice(0, 16) }}</text> | 
|---|
|  |  |  | <text v-else-if="item.orderType == '外购' || item.orderType == '内购' || item.orderType == '转入'">{{ item.deptName.slice(0, 16) }}</text> | 
|---|
|  |  |  | <text v-show="item.deptName.length >= 15 || item.customerName.length >= 15">...</text> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="map-icon"> | 
|---|
|  |  |  | <view class="map-icon" @click.stop="skipMap(item)"> | 
|---|
|  |  |  | <view><u-icon name="map" color="#4978F0" size="40"></u-icon></view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | 
|---|
|  |  |  | qiangDanOrderPlanId: null, | 
|---|
|  |  |  | fleetId: '', | 
|---|
|  |  |  | xsUserId: '', | 
|---|
|  |  |  | customerId: '', | 
|---|
|  |  |  | // 集成高德地图 | 
|---|
|  |  |  | amapPlugin: null, | 
|---|
|  |  |  | key: 'e3106700a6225e6a25727d3a41fa54c5', | 
|---|
|  |  |  | addressName: '' | 
|---|
|  |  |  | customerId: '' | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | onShow() { | 
|---|
|  |  |  | this.init(); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | methods: { | 
|---|
|  |  |  | // 跳转地图 | 
|---|
|  |  |  | skipMap(val) { | 
|---|
|  |  |  | uni.navigateTo({ | 
|---|
|  |  |  | url: `/pages/public-page/mapRoute/mapRoute?customerId=${val.customerId}&filedId=${val.filedId}&orderType=${val.orderType}${ | 
|---|
|  |  |  | val.toFiledId ? `&toFiledId=${val.toFiledId}` : '' | 
|---|
|  |  |  | }` | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | init() { | 
|---|
|  |  |  | this.qiangDanList(); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | 
|---|
|  |  |  | top: vww(-120); | 
|---|
|  |  |  | .collection-form-item { | 
|---|
|  |  |  | width: vww(345); | 
|---|
|  |  |  | height: vww(150); | 
|---|
|  |  |  | height: vww(185); | 
|---|
|  |  |  | margin-top: vww(5); | 
|---|
|  |  |  | background: #ffffff; | 
|---|
|  |  |  | box-shadow: 4rpx 6rpx 25rpx 0rpx rgba(73, 120, 240, 0.15); | 
|---|
|  |  |  | 
|---|
|  |  |  | margin: vww(18) vww(16) 0 vww(16); | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | justify-content: space-between; | 
|---|
|  |  |  | .dispatch-receive { | 
|---|
|  |  |  | width: 70%; | 
|---|
|  |  |  | .main-information { | 
|---|
|  |  |  | width: 88%; | 
|---|
|  |  |  | height: vww(28); | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | justify-content: space-between; | 
|---|
|  |  |  | justify-content: flex-start; | 
|---|
|  |  |  | align-items: center; | 
|---|
|  |  |  | .container { | 
|---|
|  |  |  | width: 100%; | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | justify-content: space-between; | 
|---|
|  |  |  | align-items: center; | 
|---|
|  |  |  | .sign { | 
|---|
|  |  |  | width: vww(28); | 
|---|
|  |  |  | height: vww(28); | 
|---|
|  |  |  | line-height: vww(28); | 
|---|
|  |  |  | text-align: center; | 
|---|
|  |  |  | background: url('https://mx.jzeg.cn:9095/appimg/image/banner/blueblock.png') no-repeat; | 
|---|
|  |  |  | background-size: contain; | 
|---|
|  |  |  | font-size: 30rpx; | 
|---|
|  |  |  | font-weight: 400; | 
|---|
|  |  |  | color: #ffffff; | 
|---|
|  |  |  | margin-right: vww(20); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .receive-icon { | 
|---|
|  |  |  | width: 62rpx; | 
|---|
|  |  |  | height: 14rpx; | 
|---|
|  |  |  | border-bottom: 3px solid #275fa5; | 
|---|
|  |  |  | position: relative; | 
|---|
|  |  |  | &:after { | 
|---|
|  |  |  | content: ''; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .main-divider { | 
|---|
|  |  |  | width: 548rpx; | 
|---|
|  |  |  | height: 1rpx; | 
|---|
|  |  |  | background: #e3e3e3; | 
|---|
|  |  |  | position: absolute; | 
|---|
|  |  |  | width: 3px; | 
|---|
|  |  |  | height: 10px; | 
|---|
|  |  |  | background-color: #275fa5; | 
|---|
|  |  |  | right: 0; | 
|---|
|  |  |  | transform: rotate(-45deg); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | top: 115rpx; | 
|---|
|  |  |  | left: vww(50); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .point-number { | 
|---|
|  |  |  | position: absolute; | 
|---|
|  |  |  | right: 0; | 
|---|
|  |  |  | width: 15%; | 
|---|
|  |  |  | text { | 
|---|
|  |  |  | font-size: 24rpx; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | font-weight: 400; | 
|---|
|  |  |  | color: #c78a64; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | font-size: 40rpx; | 
|---|
|  |  |  | font-weight: 400; | 
|---|
|  |  |  | color: #f81414; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .first-extra { | 
|---|
|  |  |  | @include firstLine; | 
|---|
|  |  |  | .main-information { | 
|---|
|  |  |  | width: 100%; | 
|---|
|  |  |  | height: vww(28); | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | justify-content: flex-start; | 
|---|
|  |  |  | align-items: center; | 
|---|
|  |  |  | .sign { | 
|---|
|  |  |  | width: vww(28); | 
|---|
|  |  |  | height: vww(28); | 
|---|
|  |  |  | line-height: vww(28); | 
|---|
|  |  |  | text-align: center; | 
|---|
|  |  |  | background: url('https://mx.jzeg.cn:9095/appimg/image/banner/redblock.png') no-repeat; | 
|---|
|  |  |  | background-size: contain; | 
|---|
|  |  |  | font-size: 30rpx; | 
|---|
|  |  |  | font-weight: 400; | 
|---|
|  |  |  | color: #ffffff; | 
|---|
|  |  |  | margin-right: vww(20); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | min-width: vww(50); | 
|---|
|  |  |  | height: 30rpx; | 
|---|
|  |  |  | font-size: 30rpx; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | font-weight: 300; | 
|---|
|  |  |  | color: #515151; | 
|---|
|  |  |  | position: relative; | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .second-line { | 
|---|
|  |  |  | @include firstLine margin: 0; | 
|---|
|  |  |  | @include firstLine; | 
|---|
|  |  |  | margin: 0; | 
|---|
|  |  |  | margin-left: vww(16); | 
|---|
|  |  |  | .main-information { | 
|---|
|  |  |  | width: 100%; | 
|---|
|  |  |  | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="origin-info" v-if="faYunDetailobj.orderType == '外购' || faYunDetailobj.orderType == '内购' || faYunDetailobj.orderType == '转出'"> | 
|---|
|  |  |  | <combined-title title="原发信息"></combined-title> | 
|---|
|  |  |  | <view class="body-container"> | 
|---|
|  |  |  | <view class="container-block"> | 
|---|
|  |  |  | <view class="">皮重</view> | 
|---|
|  |  |  | <view class="">{{ faYunDetailobj.skinTwo || 0 }}</view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <!-- <view> | 
|---|
|  |  |  | <combined-title title="发运详情"></combined-title> | 
|---|
|  |  |  | <view class="compDetails"> | 
|---|
|  |  |  | <uni-table border stripe emptyText="暂无更多数据"> | 
|---|
|  |  |  | <uni-tr> | 
|---|
|  |  |  | <uni-th align="left">提煤单编号</uni-th> | 
|---|
|  |  |  | <uni-td align="left">{{ faYunDetailobj.code || '' }}</uni-td> | 
|---|
|  |  |  | </uni-tr> | 
|---|
|  |  |  | <uni-tr> | 
|---|
|  |  |  | <uni-th align="left">提煤单状态</uni-th> | 
|---|
|  |  |  | <uni-td align="left">{{ coalStatus[faYunDetailobj.status] }}</uni-td> | 
|---|
|  |  |  | </uni-tr> | 
|---|
|  |  |  | <uni-tr> | 
|---|
|  |  |  | <uni-th align="left">车牌号</uni-th> | 
|---|
|  |  |  | <uni-td align="left">{{ faYunDetailobj.carNo || '' }}</uni-td> | 
|---|
|  |  |  | </uni-tr> | 
|---|
|  |  |  | <uni-tr> | 
|---|
|  |  |  | <uni-th align="left">入场时间</uni-th> | 
|---|
|  |  |  | <uni-td align="left">{{ faYunDetailobj.inTime || '' }}</uni-td> | 
|---|
|  |  |  | </uni-tr> | 
|---|
|  |  |  | <uni-tr> | 
|---|
|  |  |  | <uni-th align="left">出场时间</uni-th> | 
|---|
|  |  |  | <uni-td align="left">{{ faYunDetailobj.outTime || '' }}</uni-td> | 
|---|
|  |  |  | </uni-tr> | 
|---|
|  |  |  | <uni-tr> | 
|---|
|  |  |  | <uni-th align="left">皮重</uni-th> | 
|---|
|  |  |  | <uni-td align="left">{{ faYunDetailobj.skin || 0 }}</uni-td> | 
|---|
|  |  |  | </uni-tr> | 
|---|
|  |  |  | <uni-tr> | 
|---|
|  |  |  | <uni-th align="left">毛重</uni-th> | 
|---|
|  |  |  | <uni-td align="left">{{ faYunDetailobj.hair || 0 }}</uni-td> | 
|---|
|  |  |  | </uni-tr> | 
|---|
|  |  |  | <uni-tr> | 
|---|
|  |  |  | <uni-th align="left">净重</uni-th> | 
|---|
|  |  |  | <uni-td align="left">{{ faYunDetailobj.clean || 0 }}</uni-td> | 
|---|
|  |  |  | </uni-tr> | 
|---|
|  |  |  | <uni-tr> | 
|---|
|  |  |  | <uni-th align="left">订单编号</uni-th> | 
|---|
|  |  |  | <uni-td align="left">{{ faYunDetailobj.orderCode || '' }}</uni-td> | 
|---|
|  |  |  | </uni-tr> | 
|---|
|  |  |  | <uni-tr> | 
|---|
|  |  |  | <uni-th align="left">订单剩余量</uni-th> | 
|---|
|  |  |  | <uni-td align="left">{{ faYunDetailobj.allowance || 0 }}</uni-td> | 
|---|
|  |  |  | </uni-tr> | 
|---|
|  |  |  | </uni-table> | 
|---|
|  |  |  | <view class="body-container"> | 
|---|
|  |  |  | <view class="container-block"> | 
|---|
|  |  |  | <view class="">毛重</view> | 
|---|
|  |  |  | <view class="">{{ faYunDetailobj.hairTwo || 0 }}</view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> --> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="body-container"> | 
|---|
|  |  |  | <view class="container-block"> | 
|---|
|  |  |  | <view class="">净重</view> | 
|---|
|  |  |  | <view class="">{{ faYunDetailobj.cleanTwo || 0 }}</view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <script> | 
|---|
|  |  |  | import combinedTitle from '@/components/combined-title/combined-title.vue'; | 
|---|
|  |  |  | export default { | 
|---|
|  |  |  | components: { | 
|---|
|  |  |  | combinedTitle | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | data() { | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | id: '', | 
|---|
|  |  |  | 
|---|
|  |  |  | .main { | 
|---|
|  |  |  | width: 100%; | 
|---|
|  |  |  | margin-top: vww(10); | 
|---|
|  |  |  | @include flex justify-content: center; | 
|---|
|  |  |  | @include flex; | 
|---|
|  |  |  | flex-direction: column; | 
|---|
|  |  |  | .main-body { | 
|---|
|  |  |  | width: 690rpx; | 
|---|
|  |  |  | height: 1062rpx; | 
|---|
|  |  |  | background: #ffffff; | 
|---|
|  |  |  | box-shadow: 0rpx 0rpx 14rpx 0rpx rgba(73, 120, 240, 0.14), 0rpx 7rpx 45rpx 0rpx rgba(73, 120, 240, 0.12); | 
|---|
|  |  |  | border-radius: 20rpx; | 
|---|
|  |  |  | @include flex flex-direction: column; | 
|---|
|  |  |  | @include flex; | 
|---|
|  |  |  | flex-direction: column; | 
|---|
|  |  |  | align-items: flex-start; | 
|---|
|  |  |  | .body-container { | 
|---|
|  |  |  | width: 100%; | 
|---|
|  |  |  | 
|---|
|  |  |  | border-bottom: none; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .origin-info { | 
|---|
|  |  |  | width: 690rpx; | 
|---|
|  |  |  | min-height: 300rpx; | 
|---|
|  |  |  | margin-top: 20rpx; | 
|---|
|  |  |  | margin-bottom: 20rpx; | 
|---|
|  |  |  | background: #ffffff; | 
|---|
|  |  |  | box-shadow: 0rpx 0rpx 14rpx 0rpx rgba(73, 120, 240, 0.14), 0rpx 7rpx 45rpx 0rpx rgba(73, 120, 240, 0.12); | 
|---|
|  |  |  | border-radius: 20rpx; | 
|---|
|  |  |  | @include flex; | 
|---|
|  |  |  | flex-direction: column; | 
|---|
|  |  |  | align-items: flex-start; | 
|---|
|  |  |  | .body-container { | 
|---|
|  |  |  | width: 100%; | 
|---|
|  |  |  | height: vww(56); | 
|---|
|  |  |  | border-bottom: vww(1) solid #d6d6d6; | 
|---|
|  |  |  | @include flex; | 
|---|
|  |  |  | justify-content: center; | 
|---|
|  |  |  | .container-block { | 
|---|
|  |  |  | width: 94%; | 
|---|
|  |  |  | @include flex; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .uni-table { | 
|---|
|  |  |  | .uni-table-tr { | 
|---|
|  |  |  | padding: 0; | 
|---|
|  |  |  | border: vww(1) solid #c6c6c6; | 
|---|
|  |  |  | .uni-table-th { | 
|---|
|  |  |  | font-size: vww(14); | 
|---|
|  |  |  | height: vww(30); | 
|---|
|  |  |  | line-height: vww(30); | 
|---|
|  |  |  | padding: vww(5) vww(10); | 
|---|
|  |  |  | color: #111111; | 
|---|
|  |  |  | font-weight: 500; | 
|---|
|  |  |  | background: #e2e2e2; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .uni-table-td { | 
|---|
|  |  |  | font-size: vww(14); | 
|---|
|  |  |  | font-weight: 400; | 
|---|
|  |  |  | height: vww(30); | 
|---|
|  |  |  | line-height: vww(30); | 
|---|
|  |  |  | padding: vww(5) vww(10); | 
|---|
|  |  |  | color: #111111; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | <template> | 
|---|
|  |  |  | <!-- 转发 --> | 
|---|
|  |  |  | <view class="forward"> | 
|---|
|  |  |  | <view v-if="roleType == 1"><u-notice-bar :text="text" :fontSize="30" mode="link"></u-notice-bar></view> | 
|---|
|  |  |  | <view v-else-if="roleType == 2"><u-notice-bar :text="text1" :fontSize="30" mode="link"></u-notice-bar></view> | 
|---|
|  |  |  | <view class="forward-banner"> | 
|---|
|  |  |  | <view class="banner-block"> | 
|---|
|  |  |  | <view class="arrow-left" @click="back"><u-icon name="arrow-left" size="40" color="#ffffff"></u-icon></view> | 
|---|
|  |  |  | <view class="forward-text">转发</view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view v-if="roleType == 1" class="notice-bar"> | 
|---|
|  |  |  | <u-notice-bar :text="text" :fontSize="30"></u-notice-bar> | 
|---|
|  |  |  | <view class="notice-icon" style="background: url('../../../static/image/banner/notice.png') no-repeat;background-size: cover; width: 42rpx;height: 42rpx;"></view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view v-else-if="roleType == 2" class="notice-bar"><u-notice-bar :text="text1" :fontSize="30"></u-notice-bar></view> | 
|---|
|  |  |  | <view class="card-main"> | 
|---|
|  |  |  | <view class="card-block"> | 
|---|
|  |  |  | <view class="forward-card" v-for="(val, index) in jhOrderPlanForwardList" :key="index"> | 
|---|
|  |  |  | <u--form labelPosition="top" :model="forwardForm" ref="form1"> | 
|---|
|  |  |  | <u-form-item label="转发对象" labelWidth="20%" ref="item1" @click="forwardObjectClick(index)"> | 
|---|
|  |  |  | <u--input v-model="val.name" placeholder="点击选择转发对象" :readonly="true"></u--input> | 
|---|
|  |  |  | <u-swipe-action> | 
|---|
|  |  |  | <u-swipe-action-item :options="options1" @click="deleteGroup(index, val)"> | 
|---|
|  |  |  | <view class="card-content"> | 
|---|
|  |  |  | <u--form labelPosition="left" :model="forwardForm" ref="form1"> | 
|---|
|  |  |  | <u-form-item label="转发对象" labelWidth="21%" ref="item1" @click="forwardObjectClick(index)"> | 
|---|
|  |  |  | <u--input v-model="val.name" placeholder="点击选择转发对象" :readonly="true" border="bottom"></u--input> | 
|---|
|  |  |  | </u-form-item> | 
|---|
|  |  |  | <u-form-item label="输入数量" labelWidth="20%" ref="item1"> | 
|---|
|  |  |  | <u-form-item label="输入数量" ref="item2" labelWidth="21%"> | 
|---|
|  |  |  | <view class="forward-card-amount"> | 
|---|
|  |  |  | <view class="forward-card-amount-input"> | 
|---|
|  |  |  | <u--input | 
|---|
|  |  |  | 
|---|
|  |  |  | placeholder="请输入转发数量" | 
|---|
|  |  |  | @input="debouncecarNumInput(index, val.carNum)" | 
|---|
|  |  |  | @blur="blurInput(index, val.carNum)" | 
|---|
|  |  |  | border="bottom" | 
|---|
|  |  |  | ></u--input> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <u-checkbox-group v-model="val.checkboxValue1" placement="column" @change="v => checkboxChange(v, index, val)"> | 
|---|
|  |  |  | <u-checkbox :customStyle="{ marginBottom: '8px' }" size="30" labelSize="30" label="全部转发" name="全部转发" :disabled="val.ischecked"></u-checkbox> | 
|---|
|  |  |  | <u-checkbox size="30" shape="circle" labelSize="30" label="全部转发" name="全部转发" :disabled="val.ischecked"></u-checkbox> | 
|---|
|  |  |  | </u-checkbox-group> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </u-form-item> | 
|---|
|  |  |  | <u-form-item><u-button text="删除本组" :hairline="false" type="error" @click="deleteGroup(index, val)"></u-button></u-form-item> | 
|---|
|  |  |  | <!-- <u-form-item><u-button text="删除本组" :hairline="false" type="error" @click="deleteGroup(index, val)"></u-button></u-form-item> --> | 
|---|
|  |  |  | </u--form> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <!-- 增加按钮 --> | 
|---|
|  |  |  | <view class="AdddBtn"> | 
|---|
|  |  |  | <u-button text="添加" :hairline="false" type="primary" :customStyle="{ marginBottom: '8px' }" @click="addForm" :disabled="whetherClick"></u-button> | 
|---|
|  |  |  | </u-swipe-action-item> | 
|---|
|  |  |  | </u-swipe-action> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <!-- 按钮 --> | 
|---|
|  |  |  | <view class="forwardBtn"><u-button text="提交" :hairline="false" type="warning" @click="submitForm" :disabled="whetherClick1"></u-button></view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <view class="utils-buttonGroup"> | 
|---|
|  |  |  | <!-- 添加按钮 --> | 
|---|
|  |  |  | <view class="AdddBtn"><u-button text="添加" :hairline="false" @click.stop="addForm" :disabled="whetherClick"></u-button></view> | 
|---|
|  |  |  | <!-- 提交按钮 --> | 
|---|
|  |  |  | <view class="forwardBtn"><u-button text="提交" :hairline="false" type="warning" @click.stop="submitForm" :disabled="whetherClick1"></u-button></view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <!-- 增加按钮 --> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <!-- 选择货代或车队弹出框 --> | 
|---|
|  |  |  | <view class="selectHuoDaiOrFleet-container"> | 
|---|
|  |  |  | 
|---|
|  |  |  | // 个人转发数据 | 
|---|
|  |  |  | personalForward: {}, | 
|---|
|  |  |  | whetherClick: false, | 
|---|
|  |  |  | whetherClick1: false | 
|---|
|  |  |  | whetherClick1: false, | 
|---|
|  |  |  | // 滑动单元格配置 | 
|---|
|  |  |  | options1: [ | 
|---|
|  |  |  | { | 
|---|
|  |  |  | text: '删除', | 
|---|
|  |  |  | style: { | 
|---|
|  |  |  | backgroundColor: '#FB0101' | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ] | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | onShow() { | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | methods: { | 
|---|
|  |  |  | // 返回上一页 | 
|---|
|  |  |  | back() { | 
|---|
|  |  |  | uni.navigateBack({ | 
|---|
|  |  |  | delta: 1 | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | init() { | 
|---|
|  |  |  | switch (this.roleType) { | 
|---|
|  |  |  | case 1: | 
|---|
|  |  |  | 
|---|
|  |  |  | this.calculate(this.jhOrderPlanForwardList); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (this.roleType == 2) { | 
|---|
|  |  |  | this.jhOrderPlanForwardList[index].carNum = this.allrelay(this.forwardSurplus, this.jhOrderPlanForwardList[index].carNum); | 
|---|
|  |  |  | this.jhOrderPlanForwardList[index].carNum = this.allrelay(this.carNumSurplusHuodai, this.jhOrderPlanForwardList[index].carNum); | 
|---|
|  |  |  | this.calculate(this.jhOrderPlanForwardList); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 选择一个后其余禁止复选 | 
|---|
|  |  |  | 
|---|
|  |  |  | this.whetherClick1 = true; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return total; | 
|---|
|  |  |  | if (this.roleType == 2) { | 
|---|
|  |  |  | if (this.carNum >= total) { | 
|---|
|  |  |  | this.carNumSurplusHuodai = this.carNum - total; | 
|---|
|  |  |  | this.whetherClick = false; | 
|---|
|  |  |  | this.whetherClick1 = false; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | this.carNumSurplusHuodai = 0; | 
|---|
|  |  |  | this.$u.toast('剩余提煤单数量不足'); | 
|---|
|  |  |  | this.whetherClick = true; | 
|---|
|  |  |  | this.whetherClick1 = true; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | debouncecarNumInput(index, value) { | 
|---|
|  |  |  | let time; | 
|---|
|  |  |  | let that = this; | 
|---|
|  |  |  | that.$set(that.jhOrderPlanForwardList[index], 'carNum', Number(value)); | 
|---|
|  |  |  | return (function() { | 
|---|
|  |  |  | if (!time) { | 
|---|
|  |  |  | time = setTimeout(() => { | 
|---|
|  |  |  | that.$set(that.jhOrderPlanForwardList[index], 'carNum', Number(value)); | 
|---|
|  |  |  | that.calculate(that.jhOrderPlanForwardList); | 
|---|
|  |  |  | time = null; | 
|---|
|  |  |  | }, 800); | 
|---|
|  |  |  | 
|---|
|  |  |  | // 删除一组表单 | 
|---|
|  |  |  | deleteGroup(index, v) { | 
|---|
|  |  |  | let tempcarNum = v.carNum; | 
|---|
|  |  |  | if (v.id && this.jhOrderPlanForwardList[index].carNum !== tempcarNum) { | 
|---|
|  |  |  | if (v.id) { | 
|---|
|  |  |  | this.$reqPost('deleteForward', { id: v.id }, 'params').then(res => { | 
|---|
|  |  |  | if (res.code === 0) { | 
|---|
|  |  |  | this.jhOrderPlanForwardList.splice(index, 1); | 
|---|
|  |  |  | 
|---|
|  |  |  | </script> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <style lang="scss" scoped> | 
|---|
|  |  |  | @mixin flex { | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | justify-content: space-between; | 
|---|
|  |  |  | align-items: center; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | /deep/ .u-notice-bar { | 
|---|
|  |  |  | background: rgba(255, 255, 255, 0.3) !important; | 
|---|
|  |  |  | box-shadow: 0rpx 0rpx 5rpx 0rpx rgba(27, 103, 255, 0); | 
|---|
|  |  |  | border-radius: 28rpx; | 
|---|
|  |  |  | .u-notice__content { | 
|---|
|  |  |  | text { | 
|---|
|  |  |  | text-shadow: 3rpx 3rpx 8rpx #4784fe; | 
|---|
|  |  |  | font-size: 24rpx; | 
|---|
|  |  |  | color: #fd1446 !important; | 
|---|
|  |  |  | font-weight: 400; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | /deep/ .u-input { | 
|---|
|  |  |  | border-bottom: 1px solid #c4c4c4; | 
|---|
|  |  |  | width: 458rpx; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ::v-deep.forward { | 
|---|
|  |  |  | width: 90%; | 
|---|
|  |  |  | width: 100%; | 
|---|
|  |  |  | margin: 0 auto; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 卡片 | 
|---|
|  |  |  | .forward-banner { | 
|---|
|  |  |  | width: 100%; | 
|---|
|  |  |  | height: 430rpx; | 
|---|
|  |  |  | background: linear-gradient(0deg, #ffffff 0%, #0055fe 100%); | 
|---|
|  |  |  | @include flex; | 
|---|
|  |  |  | justify-content: flex-start; | 
|---|
|  |  |  | overflow: hidden; | 
|---|
|  |  |  | .banner-block { | 
|---|
|  |  |  | width: 50%; | 
|---|
|  |  |  | @include flex; | 
|---|
|  |  |  | position: relative; | 
|---|
|  |  |  | top: -75rpx; | 
|---|
|  |  |  | left: 32rpx; | 
|---|
|  |  |  | .forward-text { | 
|---|
|  |  |  | width: 80rpx; | 
|---|
|  |  |  | font-size: 40rpx; | 
|---|
|  |  |  | font-weight: 400; | 
|---|
|  |  |  | color: #ffffff; | 
|---|
|  |  |  | line-height: 69rpx; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .notice-bar { | 
|---|
|  |  |  | width: 688rpx; | 
|---|
|  |  |  | height: 56rpx; | 
|---|
|  |  |  | margin: 0 auto; | 
|---|
|  |  |  | position: relative; | 
|---|
|  |  |  | top: -200rpx; | 
|---|
|  |  |  | background: transparent; | 
|---|
|  |  |  | .notice-icon { | 
|---|
|  |  |  | position: absolute; | 
|---|
|  |  |  | top: 21rpx; | 
|---|
|  |  |  | left: 7rpx; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .card-main { | 
|---|
|  |  |  | width: 100%; | 
|---|
|  |  |  | @include flex; | 
|---|
|  |  |  | justify-content: center; | 
|---|
|  |  |  | position: relative; | 
|---|
|  |  |  | top: -100rpx; | 
|---|
|  |  |  | .card-block { | 
|---|
|  |  |  | width: 690rpx; | 
|---|
|  |  |  | @include flex; | 
|---|
|  |  |  | flex-direction: column; | 
|---|
|  |  |  | .forward-card { | 
|---|
|  |  |  | margin-top: vww(10); | 
|---|
|  |  |  | .notice-bar { | 
|---|
|  |  |  | width: 100%; | 
|---|
|  |  |  | height: vww(24); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | width: 690rpx; | 
|---|
|  |  |  | height: 275rpx; | 
|---|
|  |  |  | background: #ffffff; | 
|---|
|  |  |  | box-shadow: 4rpx 6rpx 25rpx 0rpx rgba(73, 120, 240, 0.15); | 
|---|
|  |  |  | border-radius: 20rpx; | 
|---|
|  |  |  | .card-content { | 
|---|
|  |  |  | width: 612rpx; | 
|---|
|  |  |  | margin-left: 48rpx; | 
|---|
|  |  |  | margin-top: 24rpx; | 
|---|
|  |  |  | // margin: 56rpx 30rpx 70rpx 48rpx; | 
|---|
|  |  |  | .u-form { | 
|---|
|  |  |  | .u-form-item { | 
|---|
|  |  |  | .u-form-item__body { | 
|---|
|  |  |  | .u-form-item__body__left { | 
|---|
|  |  |  | .u-form-item__body__left__content { | 
|---|
|  |  |  | .u-form-item__body__left__content__label { | 
|---|
|  |  |  | font-weight: 400 !important; | 
|---|
|  |  |  | color: #898989 !important; | 
|---|
|  |  |  | font-size: 30rpx !important; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .u-form-item__body__right { | 
|---|
|  |  |  | .u-form-item__body__right__content { | 
|---|
|  |  |  | .u-form-item__body__right__content__slot { | 
|---|
|  |  |  | 
|---|
|  |  |  | justify-content: space-between; | 
|---|
|  |  |  | align-items: flex-end; | 
|---|
|  |  |  | .forward-card-amount-input { | 
|---|
|  |  |  | width: vww(245); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .u-input { | 
|---|
|  |  |  | border: 1px solid #dddddd; | 
|---|
|  |  |  | width: 263rpx; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .u-checkbox-group { | 
|---|
|  |  |  | position: relative; | 
|---|
|  |  |  | top: vww(8); | 
|---|
|  |  |  | left: vww(4); | 
|---|
|  |  |  | .u-checkbox { | 
|---|
|  |  |  | .u-checkbox__icon-wrap { | 
|---|
|  |  |  | border-color: rgba(42, 97, 255, 1) !important; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .forward-card-amount { | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .forwardBtn { | 
|---|
|  |  |  | width: 100%; | 
|---|
|  |  |  | // position: fixed; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .utils-buttonGroup { | 
|---|
|  |  |  | width: 610rpx; | 
|---|
|  |  |  | @include flex; | 
|---|
|  |  |  | position: fixed; | 
|---|
|  |  |  | bottom: vww(50); | 
|---|
|  |  |  | left: vww(25); | 
|---|
|  |  |  | z-index: 2; | 
|---|
|  |  |  | .AdddBtn, | 
|---|
|  |  |  | .forwardBtn { | 
|---|
|  |  |  | width: 290rpx; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .AdddBtn { | 
|---|
|  |  |  | .u-button { | 
|---|
|  |  |  | height: 74rpx; | 
|---|
|  |  |  | border: 1px solid #3b56eb; | 
|---|
|  |  |  | border-radius: 37rpx 37rpx 37rpx 37rpx; | 
|---|
|  |  |  | background: transparent; | 
|---|
|  |  |  | color: #3b56eb; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .forwardBtn { | 
|---|
|  |  |  | .u-button { | 
|---|
|  |  |  | height: 74rpx; | 
|---|
|  |  |  | color: #ffffff; | 
|---|
|  |  |  | background: rgba(73, 123, 251, 1); | 
|---|
|  |  |  | border: 0; | 
|---|
|  |  |  | border-radius: 37rpx 37rpx 37rpx 37rpx; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .selectHuoDaiOrFleet-container { | 
|---|
|  |  |  | .u-popup { | 
|---|
|  |  |  | .u-transition { | 
|---|
|  |  |  | height: 95%; | 
|---|
|  |  |  | height: 80%; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .u-popup__content { | 
|---|
|  |  |  | overflow: scroll !important; | 
|---|
| New file | 
|  |  |  | 
|---|
|  |  |  | <template> | 
|---|
|  |  |  | <view> | 
|---|
|  |  |  | <view class="page-body" style="margin-top: 4rpx;"> | 
|---|
|  |  |  | <view class="page-section page-section-gap"> | 
|---|
|  |  |  | <map style="width: 100%; height: 600px;" :latitude="latitude" :longitude="longitude" :markers="markers" :polyline="polyline"></map> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="tip"> | 
|---|
|  |  |  | <view class="first"> | 
|---|
|  |  |  | 通行距离 | 
|---|
|  |  |  | <text>{{ distance || '' }}Km</text> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="first"> | 
|---|
|  |  |  | 预计到达时间 | 
|---|
|  |  |  | <text>{{ duration || '' }}</text> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <script> | 
|---|
|  |  |  | export default { | 
|---|
|  |  |  | data() { | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | latitude: 38.04606544104117, | 
|---|
|  |  |  | longitude: 114.48735479816793, | 
|---|
|  |  |  | customerId: '', | 
|---|
|  |  |  | filedId: '', | 
|---|
|  |  |  | orderType: '', | 
|---|
|  |  |  | toFiledId: '', | 
|---|
|  |  |  | // 起点经纬度 | 
|---|
|  |  |  | originlongitude: 39.909, | 
|---|
|  |  |  | originlatitude: 116.39742, | 
|---|
|  |  |  | // 终点 | 
|---|
|  |  |  | finishlongitude: null, | 
|---|
|  |  |  | finishlatitude: null, | 
|---|
|  |  |  | markers: [ | 
|---|
|  |  |  | { | 
|---|
|  |  |  | latitude: null, | 
|---|
|  |  |  | longitude: null, | 
|---|
|  |  |  | iconPath: '../../../static/image/banner/location.png', | 
|---|
|  |  |  | width: 23, | 
|---|
|  |  |  | height: 33, | 
|---|
|  |  |  | id: 0, | 
|---|
|  |  |  | callout: { | 
|---|
|  |  |  | content: '起点', //文本 | 
|---|
|  |  |  | color: '#ffffff', //文字颜色 | 
|---|
|  |  |  | fontSize: 14, //文本大小 | 
|---|
|  |  |  | borderRadius: 15, //边框圆角 | 
|---|
|  |  |  | borderWidth: '10', | 
|---|
|  |  |  | bgColor: '#e51860', //背景颜色 | 
|---|
|  |  |  | display: 'ALWAYS' //常显 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | latitude: null, | 
|---|
|  |  |  | longitude: null, | 
|---|
|  |  |  | iconPath: '../../../static/image/banner/location.png', | 
|---|
|  |  |  | width: 23, | 
|---|
|  |  |  | height: 33, | 
|---|
|  |  |  | id: 1, | 
|---|
|  |  |  | callout: { | 
|---|
|  |  |  | content: '终点', //文本 | 
|---|
|  |  |  | color: '#ffffff', //文字颜色 | 
|---|
|  |  |  | fontSize: 14, //文本大小 | 
|---|
|  |  |  | borderRadius: 15, //边框圆角 | 
|---|
|  |  |  | borderWidth: '10', | 
|---|
|  |  |  | bgColor: '#e51860', //背景颜色 | 
|---|
|  |  |  | display: 'ALWAYS' //常显 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ], | 
|---|
|  |  |  | polyline: [ | 
|---|
|  |  |  | { | 
|---|
|  |  |  | // 每个点的经纬度 | 
|---|
|  |  |  | points: [{ latitude: 38.04606544104117, longitude: 114.48735479816793 }, { latitude: 38.049531, longitude: 114.53521899999998 }], | 
|---|
|  |  |  | // 颜色 | 
|---|
|  |  |  | color: '#0091ff', | 
|---|
|  |  |  | // 宽度 | 
|---|
|  |  |  | width: 10 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ], | 
|---|
|  |  |  | distance: null, | 
|---|
|  |  |  | duration: null | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | methods: { | 
|---|
|  |  |  | getLocation() { | 
|---|
|  |  |  | uni.showLoading({ | 
|---|
|  |  |  | title: '加载中’' | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | let QQMapWX = require('../../../utils/qqmap-wx-jssdk.js'); | 
|---|
|  |  |  | let qqmapsdk = new QQMapWX({ | 
|---|
|  |  |  | key: 'HTNBZ-LZGRQ-YDB5S-B4KAS-KLHJH-GHBUE' // 必填 | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | const params = this.toFiledId ? { toFiledId: this.toFiledId } : { customerId: this.customerId, filedId: this.filedId }; | 
|---|
|  |  |  | this.$reqGet('getAppLocation', params).then(res => { | 
|---|
|  |  |  | console.log(res, '腾讯经纬度'); | 
|---|
|  |  |  | let _this = this; | 
|---|
|  |  |  | let fromLocation; | 
|---|
|  |  |  | let toLocation; | 
|---|
|  |  |  | if (_this.orderType == '外购' || _this.orderType == '外销') { | 
|---|
|  |  |  | _this.$set(_this.markers[0], 'longitude', res.data.customerLongitude); | 
|---|
|  |  |  | _this.$set(_this.markers[0], 'latitude', res.data.customerLatitude); | 
|---|
|  |  |  | fromLocation = { | 
|---|
|  |  |  | longitude: res.data.customerLongitude, | 
|---|
|  |  |  | latitude: res.data.customerLatitude | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | _this.$set(_this.markers[1], 'longitude', res.data.filedLongitude); | 
|---|
|  |  |  | _this.$set(_this.markers[1], 'latitude', res.data.filedLatitude); | 
|---|
|  |  |  | toLocation = { | 
|---|
|  |  |  | longitude: res.data.filedLongitude, | 
|---|
|  |  |  | latitude: res.data.filedLatitude | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | } else if (_this.orderType == '内购' || _this.orderType == '内销') { | 
|---|
|  |  |  | _this.$set(_this.markers[0], 'longitude', res.data.filedLongitude); | 
|---|
|  |  |  | _this.$set(_this.markers[0], 'latitude', res.data.filedLatitude); | 
|---|
|  |  |  | fromLocation = { | 
|---|
|  |  |  | longitude: res.data.filedLongitude, | 
|---|
|  |  |  | latitude: res.data.filedLatitude | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | _this.$set(_this.markers[1], 'longitude', res.data.customerLongitude); | 
|---|
|  |  |  | _this.$set(_this.markers[1], 'latitude', res.data.customerLatitude); | 
|---|
|  |  |  | toLocation = { | 
|---|
|  |  |  | longitude: res.data.customerLongitude, | 
|---|
|  |  |  | latitude: res.data.customerLatitude | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //调用距离计算接口 | 
|---|
|  |  |  | qqmapsdk.direction({ | 
|---|
|  |  |  | mode: 'driving', | 
|---|
|  |  |  | //from参数不填默认当前地址 | 
|---|
|  |  |  | from: fromLocation, | 
|---|
|  |  |  | to: toLocation, | 
|---|
|  |  |  | success: function(res) { | 
|---|
|  |  |  | console.log(res); | 
|---|
|  |  |  | let ret = res; | 
|---|
|  |  |  | let coors = ret.result.routes[0].polyline, | 
|---|
|  |  |  | pl = []; | 
|---|
|  |  |  | //坐标解压(返回的点串坐标,通过前向差分进行压缩) | 
|---|
|  |  |  | let kr = 1000000; | 
|---|
|  |  |  | for (let i = 2; i < coors.length; i++) { | 
|---|
|  |  |  | coors[i] = Number(coors[i - 2]) + Number(coors[i]) / kr; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //将解压后的坐标放入点串数组pl中 | 
|---|
|  |  |  | for (let i = 0; i < coors.length; i += 2) { | 
|---|
|  |  |  | pl.push({ latitude: coors[i], longitude: coors[i + 1] }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | console.log(pl); | 
|---|
|  |  |  | //设置polyline属性,将路线显示出来,将解压坐标第一个数据作为起点 | 
|---|
|  |  |  | _this.longitude = pl[0].longitude; | 
|---|
|  |  |  | _this.latitude = pl[0].latitude; | 
|---|
|  |  |  | _this.polyline = [ | 
|---|
|  |  |  | { | 
|---|
|  |  |  | points: pl, | 
|---|
|  |  |  | color: '#FF0000DD', | 
|---|
|  |  |  | width: 4, | 
|---|
|  |  |  | arrowLine: true | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ]; | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | fail: function(error) { | 
|---|
|  |  |  | console.error(error); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | complete: function(res) { | 
|---|
|  |  |  | console.log(res); | 
|---|
|  |  |  | uni.hideLoading(); | 
|---|
|  |  |  | _this.distance = res.result.routes[0].distance; | 
|---|
|  |  |  | _this.distance = (_this.distance / 1000).toFixed(2); | 
|---|
|  |  |  | _this.duration = _this.handleTime(res.result.routes[0].duration); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // | 
|---|
|  |  |  | handleTime(time) { | 
|---|
|  |  |  | let now = new Date(); // 获取当前时间 | 
|---|
|  |  |  | now.setMinutes(now.getMinutes() + time); | 
|---|
|  |  |  | let hours = now | 
|---|
|  |  |  | .getHours() | 
|---|
|  |  |  | .toString() | 
|---|
|  |  |  | .padStart(2, '0'); | 
|---|
|  |  |  | let minutes = now | 
|---|
|  |  |  | .getMinutes() | 
|---|
|  |  |  | .toString() | 
|---|
|  |  |  | .padStart(2, '0'); | 
|---|
|  |  |  | return hours + ':' + minutes; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | onLoad(params) { | 
|---|
|  |  |  | this.customerId = params.customerId; | 
|---|
|  |  |  | this.filedId = params.filedId; | 
|---|
|  |  |  | this.orderType = params.orderType; | 
|---|
|  |  |  | if (params.toFiledId) { | 
|---|
|  |  |  | this.toFiledId = params.toFiledId; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | onShow() { | 
|---|
|  |  |  | if (this.orderType !== '转入' || this.orderType !== '转出') { | 
|---|
|  |  |  | this.getLocation(); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | </script> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <style lang="scss" scoped> | 
|---|
|  |  |  | .tip { | 
|---|
|  |  |  | margin-top: 60rpx; | 
|---|
|  |  |  | width: 94%; | 
|---|
|  |  |  | height: 40rpx; | 
|---|
|  |  |  | font-size: 40rpx; | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | justify-content: space-around; | 
|---|
|  |  |  | .first { | 
|---|
|  |  |  | color: #c78a64; | 
|---|
|  |  |  | text { | 
|---|
|  |  |  | font-size: 45rpx; | 
|---|
|  |  |  | color: #f81414; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | </style> | 
|---|
|  |  |  | 
|---|
|  |  |  | if (res.code == 0) { | 
|---|
|  |  |  | uni.hideLoading(); | 
|---|
|  |  |  | this.total = res.data.total; | 
|---|
|  |  |  | const regex = /<[^>]*>([^<]*)<\/[^>]*>/g; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const solveHandle = v => { | 
|---|
|  |  |  | const regex = /<[^>]*>([^<]*)<\/[^>]*>/g; | 
|---|
|  |  |  | let result = v.replace(regex, (match, p1) => { | 
|---|
|  |  |  | return p1.length > 8 ? p1.slice(0, 8) + '...' : p1; | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | return result; | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | if (this.pageNum > 1) { | 
|---|
|  |  |  | this.messageList = this.messageList.concat(res.data.records); | 
|---|
|  |  |  | this.messageList = this.messageList.map(v => { | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | ...v, | 
|---|
|  |  |  | content: solveHandle(v.content) | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } else if (this.pageNum == 1) { | 
|---|
|  |  |  | this.messageList = res.data.records; | 
|---|
|  |  |  | this.messageList = this.messageList.map(v => { | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | ...v, | 
|---|
|  |  |  | content: solveHandle(v.content) | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | this.$u.toast('加载失败'); | 
|---|
|  |  |  | 
|---|
|  |  |  | freightForwarderIndex | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | computed: { | 
|---|
|  |  |  | ...mapState(['globalweighHouseCode', 'globalweigh']) | 
|---|
|  |  |  | ...mapState(['globalweighHouseCode', 'globalweigh', 'globalisconnect']) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | watch: { | 
|---|
|  |  |  | globalisconnect(v, oldv) {} | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | //首页下拉刷新 | 
|---|
|  |  |  | onPullDownRefresh() { | 
|---|
|  |  |  | 
|---|
|  |  |  | console.log('开启双人通话成功Complete'); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | let amap = require('../../../utils/amap-wx.130.js'); | 
|---|
|  |  |  | let amapPlugin = new amap.AMapWX({ | 
|---|
|  |  |  | key: 'e3106700a6225e6a25727d3a41fa54c5' | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | amapPlugin.getRegeo({ | 
|---|
|  |  |  | success: data => { | 
|---|
|  |  |  | console.log(data, '获取位置'); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | fail: info => { | 
|---|
|  |  |  | console.log(info, '错误信息'); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | data() { | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | 
|---|
|  |  |  | messagePushShow: false, | 
|---|
|  |  |  | messageList: {}, | 
|---|
|  |  |  | isconnect: false, | 
|---|
|  |  |  | dotShow: false, | 
|---|
|  |  |  | amapPlugin: null, | 
|---|
|  |  |  | key: 'e3106700a6225e6a25727d3a41fa54c5', | 
|---|
|  |  |  | addressName: '' | 
|---|
|  |  |  | dotShow: false | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | onShow() { | 
|---|
|  |  |  | this.init(); | 
|---|
|  |  |  | if (!this.isconnect) { | 
|---|
|  |  |  | if (!this.globalisconnect || !this.isconnect) { | 
|---|
|  |  |  | this.initWebsocket(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.userAuthorization(); | 
|---|
|  |  |  | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | onHide() { | 
|---|
|  |  |  | console.log('页面隐藏'); | 
|---|
|  |  |  | if (!this.isconnect) { | 
|---|
|  |  |  | // this.isconnect = false; | 
|---|
|  |  |  | // this.changeisconnect(false); | 
|---|
|  |  |  | // socket.close(); | 
|---|
|  |  |  | if (!this.globalisconnect || !this.isconnect) { | 
|---|
|  |  |  | this.initWebsocket(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | 
|---|
|  |  |  | clearInterval(this.intervalId); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | methods: { | 
|---|
|  |  |  | ...mapMutations(['pushMessage', 'changeWeigh', 'changeinfraredStatus']), | 
|---|
|  |  |  | ...mapMutations(['pushMessage', 'changeWeigh', 'changeinfraredStatus', 'changeisconnect']), | 
|---|
|  |  |  | messagePage() { | 
|---|
|  |  |  | uni.navigateTo({ | 
|---|
|  |  |  | url: '/pages/public-page/message/message' | 
|---|
|  |  |  | 
|---|
|  |  |  | complete: res => { | 
|---|
|  |  |  | console.log(res, 'socket结果'); | 
|---|
|  |  |  | if (res.errMsg == 'connectSocket:ok') { | 
|---|
|  |  |  | this.changeisconnect(true); | 
|---|
|  |  |  | this.isconnect = true; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | weight: '', | 
|---|
|  |  |  | userId: '' | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | globalisconnect: false | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | mutations: { | 
|---|
|  |  |  | lengthchange(state, payload) { | 
|---|
|  |  |  | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | changeuserInfo(state, payload) { | 
|---|
|  |  |  | state.globaluserInfo = payload | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 改版全局websocket状态 | 
|---|
|  |  |  | changeisconnect(state, payload) { | 
|---|
|  |  |  | state.globalisconnect = payload | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
| New file | 
|  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 微信小程序JavaScriptSDK | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @version 1.2 | 
|---|
|  |  |  | * @date 2019-03-06 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var ERROR_CONF = { | 
|---|
|  |  |  | KEY_ERR: 311, | 
|---|
|  |  |  | KEY_ERR_MSG: 'key格式错误', | 
|---|
|  |  |  | PARAM_ERR: 310, | 
|---|
|  |  |  | PARAM_ERR_MSG: '请求参数信息有误', | 
|---|
|  |  |  | SYSTEM_ERR: 600, | 
|---|
|  |  |  | SYSTEM_ERR_MSG: '系统错误', | 
|---|
|  |  |  | WX_ERR_CODE: 1000, | 
|---|
|  |  |  | WX_OK_CODE: 200 | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | var BASE_URL = 'https://apis.map.qq.com/ws/'; | 
|---|
|  |  |  | var URL_SEARCH = BASE_URL + 'place/v1/search'; | 
|---|
|  |  |  | var URL_SUGGESTION = BASE_URL + 'place/v1/suggestion'; | 
|---|
|  |  |  | var URL_GET_GEOCODER = BASE_URL + 'geocoder/v1/'; | 
|---|
|  |  |  | var URL_CITY_LIST = BASE_URL + 'district/v1/list'; | 
|---|
|  |  |  | var URL_AREA_LIST = BASE_URL + 'district/v1/getchildren'; | 
|---|
|  |  |  | var URL_DISTANCE = BASE_URL + 'distance/v1/'; | 
|---|
|  |  |  | var URL_DIRECTION = BASE_URL + 'direction/v1/'; | 
|---|
|  |  |  | var MODE = { | 
|---|
|  |  |  | driving: 'driving', | 
|---|
|  |  |  | transit: 'transit' | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | var EARTH_RADIUS = 6378136.49; | 
|---|
|  |  |  | var Utils = { | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * md5加密方法 | 
|---|
|  |  |  | * 版权所有©2011 Sebastian Tschan,https://blueimp.net | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | safeAdd(x, y) { | 
|---|
|  |  |  | var lsw = (x & 0xffff) + (y & 0xffff); | 
|---|
|  |  |  | var msw = (x >> 16) + (y >> 16) + (lsw >> 16); | 
|---|
|  |  |  | return (msw << 16) | (lsw & 0xffff); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | bitRotateLeft(num, cnt) { | 
|---|
|  |  |  | return (num << cnt) | (num >>> (32 - cnt)); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | md5cmn(q, a, b, x, s, t) { | 
|---|
|  |  |  | return this.safeAdd(this.bitRotateLeft(this.safeAdd(this.safeAdd(a, q), this.safeAdd(x, t)), s), b); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | md5ff(a, b, c, d, x, s, t) { | 
|---|
|  |  |  | return this.md5cmn((b & c) | (~b & d), a, b, x, s, t); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | md5gg(a, b, c, d, x, s, t) { | 
|---|
|  |  |  | return this.md5cmn((b & d) | (c & ~d), a, b, x, s, t); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | md5hh(a, b, c, d, x, s, t) { | 
|---|
|  |  |  | return this.md5cmn(b ^ c ^ d, a, b, x, s, t); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | md5ii(a, b, c, d, x, s, t) { | 
|---|
|  |  |  | return this.md5cmn(c ^ (b | ~d), a, b, x, s, t); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | binlMD5(x, len) { | 
|---|
|  |  |  | /* append padding */ | 
|---|
|  |  |  | x[len >> 5] |= 0x80 << (len % 32); | 
|---|
|  |  |  | x[((len + 64) >>> 9 << 4) + 14] = len; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var i; | 
|---|
|  |  |  | var olda; | 
|---|
|  |  |  | var oldb; | 
|---|
|  |  |  | var oldc; | 
|---|
|  |  |  | var oldd; | 
|---|
|  |  |  | var a = 1732584193; | 
|---|
|  |  |  | var b = -271733879; | 
|---|
|  |  |  | var c = -1732584194; | 
|---|
|  |  |  | var d = 271733878; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | for (i = 0; i < x.length; i += 16) { | 
|---|
|  |  |  | olda = a; | 
|---|
|  |  |  | oldb = b; | 
|---|
|  |  |  | oldc = c; | 
|---|
|  |  |  | oldd = d; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | a = this.md5ff(a, b, c, d, x[i], 7, -680876936); | 
|---|
|  |  |  | d = this.md5ff(d, a, b, c, x[i + 1], 12, -389564586); | 
|---|
|  |  |  | c = this.md5ff(c, d, a, b, x[i + 2], 17, 606105819); | 
|---|
|  |  |  | b = this.md5ff(b, c, d, a, x[i + 3], 22, -1044525330); | 
|---|
|  |  |  | a = this.md5ff(a, b, c, d, x[i + 4], 7, -176418897); | 
|---|
|  |  |  | d = this.md5ff(d, a, b, c, x[i + 5], 12, 1200080426); | 
|---|
|  |  |  | c = this.md5ff(c, d, a, b, x[i + 6], 17, -1473231341); | 
|---|
|  |  |  | b = this.md5ff(b, c, d, a, x[i + 7], 22, -45705983); | 
|---|
|  |  |  | a = this.md5ff(a, b, c, d, x[i + 8], 7, 1770035416); | 
|---|
|  |  |  | d = this.md5ff(d, a, b, c, x[i + 9], 12, -1958414417); | 
|---|
|  |  |  | c = this.md5ff(c, d, a, b, x[i + 10], 17, -42063); | 
|---|
|  |  |  | b = this.md5ff(b, c, d, a, x[i + 11], 22, -1990404162); | 
|---|
|  |  |  | a = this.md5ff(a, b, c, d, x[i + 12], 7, 1804603682); | 
|---|
|  |  |  | d = this.md5ff(d, a, b, c, x[i + 13], 12, -40341101); | 
|---|
|  |  |  | c = this.md5ff(c, d, a, b, x[i + 14], 17, -1502002290); | 
|---|
|  |  |  | b = this.md5ff(b, c, d, a, x[i + 15], 22, 1236535329); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | a = this.md5gg(a, b, c, d, x[i + 1], 5, -165796510); | 
|---|
|  |  |  | d = this.md5gg(d, a, b, c, x[i + 6], 9, -1069501632); | 
|---|
|  |  |  | c = this.md5gg(c, d, a, b, x[i + 11], 14, 643717713); | 
|---|
|  |  |  | b = this.md5gg(b, c, d, a, x[i], 20, -373897302); | 
|---|
|  |  |  | a = this.md5gg(a, b, c, d, x[i + 5], 5, -701558691); | 
|---|
|  |  |  | d = this.md5gg(d, a, b, c, x[i + 10], 9, 38016083); | 
|---|
|  |  |  | c = this.md5gg(c, d, a, b, x[i + 15], 14, -660478335); | 
|---|
|  |  |  | b = this.md5gg(b, c, d, a, x[i + 4], 20, -405537848); | 
|---|
|  |  |  | a = this.md5gg(a, b, c, d, x[i + 9], 5, 568446438); | 
|---|
|  |  |  | d = this.md5gg(d, a, b, c, x[i + 14], 9, -1019803690); | 
|---|
|  |  |  | c = this.md5gg(c, d, a, b, x[i + 3], 14, -187363961); | 
|---|
|  |  |  | b = this.md5gg(b, c, d, a, x[i + 8], 20, 1163531501); | 
|---|
|  |  |  | a = this.md5gg(a, b, c, d, x[i + 13], 5, -1444681467); | 
|---|
|  |  |  | d = this.md5gg(d, a, b, c, x[i + 2], 9, -51403784); | 
|---|
|  |  |  | c = this.md5gg(c, d, a, b, x[i + 7], 14, 1735328473); | 
|---|
|  |  |  | b = this.md5gg(b, c, d, a, x[i + 12], 20, -1926607734); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | a = this.md5hh(a, b, c, d, x[i + 5], 4, -378558); | 
|---|
|  |  |  | d = this.md5hh(d, a, b, c, x[i + 8], 11, -2022574463); | 
|---|
|  |  |  | c = this.md5hh(c, d, a, b, x[i + 11], 16, 1839030562); | 
|---|
|  |  |  | b = this.md5hh(b, c, d, a, x[i + 14], 23, -35309556); | 
|---|
|  |  |  | a = this.md5hh(a, b, c, d, x[i + 1], 4, -1530992060); | 
|---|
|  |  |  | d = this.md5hh(d, a, b, c, x[i + 4], 11, 1272893353); | 
|---|
|  |  |  | c = this.md5hh(c, d, a, b, x[i + 7], 16, -155497632); | 
|---|
|  |  |  | b = this.md5hh(b, c, d, a, x[i + 10], 23, -1094730640); | 
|---|
|  |  |  | a = this.md5hh(a, b, c, d, x[i + 13], 4, 681279174); | 
|---|
|  |  |  | d = this.md5hh(d, a, b, c, x[i], 11, -358537222); | 
|---|
|  |  |  | c = this.md5hh(c, d, a, b, x[i + 3], 16, -722521979); | 
|---|
|  |  |  | b = this.md5hh(b, c, d, a, x[i + 6], 23, 76029189); | 
|---|
|  |  |  | a = this.md5hh(a, b, c, d, x[i + 9], 4, -640364487); | 
|---|
|  |  |  | d = this.md5hh(d, a, b, c, x[i + 12], 11, -421815835); | 
|---|
|  |  |  | c = this.md5hh(c, d, a, b, x[i + 15], 16, 530742520); | 
|---|
|  |  |  | b = this.md5hh(b, c, d, a, x[i + 2], 23, -995338651); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | a = this.md5ii(a, b, c, d, x[i], 6, -198630844); | 
|---|
|  |  |  | d = this.md5ii(d, a, b, c, x[i + 7], 10, 1126891415); | 
|---|
|  |  |  | c = this.md5ii(c, d, a, b, x[i + 14], 15, -1416354905); | 
|---|
|  |  |  | b = this.md5ii(b, c, d, a, x[i + 5], 21, -57434055); | 
|---|
|  |  |  | a = this.md5ii(a, b, c, d, x[i + 12], 6, 1700485571); | 
|---|
|  |  |  | d = this.md5ii(d, a, b, c, x[i + 3], 10, -1894986606); | 
|---|
|  |  |  | c = this.md5ii(c, d, a, b, x[i + 10], 15, -1051523); | 
|---|
|  |  |  | b = this.md5ii(b, c, d, a, x[i + 1], 21, -2054922799); | 
|---|
|  |  |  | a = this.md5ii(a, b, c, d, x[i + 8], 6, 1873313359); | 
|---|
|  |  |  | d = this.md5ii(d, a, b, c, x[i + 15], 10, -30611744); | 
|---|
|  |  |  | c = this.md5ii(c, d, a, b, x[i + 6], 15, -1560198380); | 
|---|
|  |  |  | b = this.md5ii(b, c, d, a, x[i + 13], 21, 1309151649); | 
|---|
|  |  |  | a = this.md5ii(a, b, c, d, x[i + 4], 6, -145523070); | 
|---|
|  |  |  | d = this.md5ii(d, a, b, c, x[i + 11], 10, -1120210379); | 
|---|
|  |  |  | c = this.md5ii(c, d, a, b, x[i + 2], 15, 718787259); | 
|---|
|  |  |  | b = this.md5ii(b, c, d, a, x[i + 9], 21, -343485551); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | a = this.safeAdd(a, olda); | 
|---|
|  |  |  | b = this.safeAdd(b, oldb); | 
|---|
|  |  |  | c = this.safeAdd(c, oldc); | 
|---|
|  |  |  | d = this.safeAdd(d, oldd); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return [a, b, c, d]; | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | binl2rstr(input) { | 
|---|
|  |  |  | var i; | 
|---|
|  |  |  | var output = ''; | 
|---|
|  |  |  | var length32 = input.length * 32; | 
|---|
|  |  |  | for (i = 0; i < length32; i += 8) { | 
|---|
|  |  |  | output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return output; | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | rstr2binl(input) { | 
|---|
|  |  |  | var i; | 
|---|
|  |  |  | var output = []; | 
|---|
|  |  |  | output[(input.length >> 2) - 1] = undefined; | 
|---|
|  |  |  | for (i = 0; i < output.length; i += 1) { | 
|---|
|  |  |  | output[i] = 0; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | var length8 = input.length * 8; | 
|---|
|  |  |  | for (i = 0; i < length8; i += 8) { | 
|---|
|  |  |  | output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return output; | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | rstrMD5(s) { | 
|---|
|  |  |  | return this.binl2rstr(this.binlMD5(this.rstr2binl(s), s.length * 8)); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | rstrHMACMD5(key, data) { | 
|---|
|  |  |  | var i; | 
|---|
|  |  |  | var bkey = this.rstr2binl(key); | 
|---|
|  |  |  | var ipad = []; | 
|---|
|  |  |  | var opad = []; | 
|---|
|  |  |  | var hash; | 
|---|
|  |  |  | ipad[15] = opad[15] = undefined; | 
|---|
|  |  |  | if (bkey.length > 16) { | 
|---|
|  |  |  | bkey = this.binlMD5(bkey, key.length * 8); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | for (i = 0; i < 16; i += 1) { | 
|---|
|  |  |  | ipad[i] = bkey[i] ^ 0x36363636; | 
|---|
|  |  |  | opad[i] = bkey[i] ^ 0x5c5c5c5c; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | hash = this.binlMD5(ipad.concat(this.rstr2binl(data)), 512 + data.length * 8); | 
|---|
|  |  |  | return this.binl2rstr(this.binlMD5(opad.concat(hash), 512 + 128)); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | rstr2hex(input) { | 
|---|
|  |  |  | var hexTab = '0123456789abcdef'; | 
|---|
|  |  |  | var output = ''; | 
|---|
|  |  |  | var x; | 
|---|
|  |  |  | var i; | 
|---|
|  |  |  | for (i = 0; i < input.length; i += 1) { | 
|---|
|  |  |  | x = input.charCodeAt(i); | 
|---|
|  |  |  | output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return output; | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | str2rstrUTF8(input) { | 
|---|
|  |  |  | return unescape(encodeURIComponent(input)); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | rawMD5(s) { | 
|---|
|  |  |  | return this.rstrMD5(this.str2rstrUTF8(s)); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | hexMD5(s) { | 
|---|
|  |  |  | return this.rstr2hex(this.rawMD5(s)); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | rawHMACMD5(k, d) { | 
|---|
|  |  |  | return this.rstrHMACMD5(this.str2rstrUTF8(k), str2rstrUTF8(d)); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | hexHMACMD5(k, d) { | 
|---|
|  |  |  | return this.rstr2hex(this.rawHMACMD5(k, d)); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | md5(string, key, raw) { | 
|---|
|  |  |  | if (!key) { | 
|---|
|  |  |  | if (!raw) { | 
|---|
|  |  |  | return this.hexMD5(string); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return this.rawMD5(string); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (!raw) { | 
|---|
|  |  |  | return this.hexHMACMD5(key, string); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return this.rawHMACMD5(key, string); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 得到md5加密后的sig参数 | 
|---|
|  |  |  | * @param {Object} requestParam 接口参数 | 
|---|
|  |  |  | * @param {String} sk签名字符串 | 
|---|
|  |  |  | * @param {String} featrue 方法名 | 
|---|
|  |  |  | * @return 返回加密后的sig参数 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | getSig(requestParam, sk, feature, mode) { | 
|---|
|  |  |  | var sig = null; | 
|---|
|  |  |  | var requestArr = []; | 
|---|
|  |  |  | Object.keys(requestParam).sort().forEach(function(key){ | 
|---|
|  |  |  | requestArr.push(key + '=' + requestParam[key]); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | if (feature == 'search') { | 
|---|
|  |  |  | sig = '/ws/place/v1/search?' + requestArr.join('&') + sk; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (feature == 'suggest') { | 
|---|
|  |  |  | sig = '/ws/place/v1/suggestion?' + requestArr.join('&') + sk; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (feature == 'reverseGeocoder') { | 
|---|
|  |  |  | sig = '/ws/geocoder/v1/?' + requestArr.join('&') + sk; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (feature == 'geocoder') { | 
|---|
|  |  |  | sig = '/ws/geocoder/v1/?' + requestArr.join('&') + sk; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (feature == 'getCityList') { | 
|---|
|  |  |  | sig = '/ws/district/v1/list?' + requestArr.join('&') + sk; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (feature == 'getDistrictByCityId') { | 
|---|
|  |  |  | sig = '/ws/district/v1/getchildren?' + requestArr.join('&') + sk; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (feature == 'calculateDistance') { | 
|---|
|  |  |  | sig = '/ws/distance/v1/?' + requestArr.join('&') + sk; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (feature == 'direction') { | 
|---|
|  |  |  | sig = '/ws/direction/v1/' + mode + '?' + requestArr.join('&') + sk; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | sig = this.md5(sig); | 
|---|
|  |  |  | return sig; | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 得到终点query字符串 | 
|---|
|  |  |  | * @param {Array|String} 检索数据 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | location2query(data) { | 
|---|
|  |  |  | if (typeof data == 'string') { | 
|---|
|  |  |  | return data; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | var query = ''; | 
|---|
|  |  |  | for (var i = 0; i < data.length; i++) { | 
|---|
|  |  |  | var d = data[i]; | 
|---|
|  |  |  | if (!!query) { | 
|---|
|  |  |  | query += ';'; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (d.location) { | 
|---|
|  |  |  | query = query + d.location.lat + ',' + d.location.lng; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (d.latitude && d.longitude) { | 
|---|
|  |  |  | query = query + d.latitude + ',' + d.longitude; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return query; | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 计算角度 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | rad(d) { | 
|---|
|  |  |  | return d * Math.PI / 180.0; | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 处理终点location数组 | 
|---|
|  |  |  | * @return 返回终点数组 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | getEndLocation(location){ | 
|---|
|  |  |  | var to = location.split(';'); | 
|---|
|  |  |  | var endLocation = []; | 
|---|
|  |  |  | for (var i = 0; i < to.length; i++) { | 
|---|
|  |  |  | endLocation.push({ | 
|---|
|  |  |  | lat: parseFloat(to[i].split(',')[0]), | 
|---|
|  |  |  | lng: parseFloat(to[i].split(',')[1]) | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return endLocation; | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 计算两点间直线距离 | 
|---|
|  |  |  | * @param a 表示纬度差 | 
|---|
|  |  |  | * @param b 表示经度差 | 
|---|
|  |  |  | * @return 返回的是距离,单位m | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | getDistance(latFrom, lngFrom, latTo, lngTo) { | 
|---|
|  |  |  | var radLatFrom = this.rad(latFrom); | 
|---|
|  |  |  | var radLatTo = this.rad(latTo); | 
|---|
|  |  |  | var a = radLatFrom - radLatTo; | 
|---|
|  |  |  | var b = this.rad(lngFrom) - this.rad(lngTo); | 
|---|
|  |  |  | var distance = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLatFrom) * Math.cos(radLatTo) * Math.pow(Math.sin(b / 2), 2))); | 
|---|
|  |  |  | distance = distance * EARTH_RADIUS; | 
|---|
|  |  |  | distance = Math.round(distance * 10000) / 10000; | 
|---|
|  |  |  | return parseFloat(distance.toFixed(0)); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 使用微信接口进行定位 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | getWXLocation(success, fail, complete) { | 
|---|
|  |  |  | wx.getLocation({ | 
|---|
|  |  |  | type: 'gcj02', | 
|---|
|  |  |  | success: success, | 
|---|
|  |  |  | fail: fail, | 
|---|
|  |  |  | complete: complete | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 获取location参数 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | getLocationParam(location) { | 
|---|
|  |  |  | if (typeof location == 'string') { | 
|---|
|  |  |  | var locationArr = location.split(','); | 
|---|
|  |  |  | if (locationArr.length === 2) { | 
|---|
|  |  |  | location = { | 
|---|
|  |  |  | latitude: location.split(',')[0], | 
|---|
|  |  |  | longitude: location.split(',')[1] | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | location = {}; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return location; | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 回调函数默认处理 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | polyfillParam(param) { | 
|---|
|  |  |  | param.success = param.success || function () { }; | 
|---|
|  |  |  | param.fail = param.fail || function () { }; | 
|---|
|  |  |  | param.complete = param.complete || function () { }; | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 验证param对应的key值是否为空 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @param {Object} param 接口参数 | 
|---|
|  |  |  | * @param {String} key 对应参数的key | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | checkParamKeyEmpty(param, key) { | 
|---|
|  |  |  | if (!param[key]) { | 
|---|
|  |  |  | var errconf = this.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + key +'参数格式有误'); | 
|---|
|  |  |  | param.fail(errconf); | 
|---|
|  |  |  | param.complete(errconf); | 
|---|
|  |  |  | return true; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 验证参数中是否存在检索词keyword | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @param {Object} param 接口参数 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | checkKeyword(param){ | 
|---|
|  |  |  | return !this.checkParamKeyEmpty(param, 'keyword'); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 验证location值 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @param {Object} param 接口参数 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | checkLocation(param) { | 
|---|
|  |  |  | var location = this.getLocationParam(param.location); | 
|---|
|  |  |  | if (!location || !location.latitude || !location.longitude) { | 
|---|
|  |  |  | var errconf = this.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + ' location参数格式有误'); | 
|---|
|  |  |  | param.fail(errconf); | 
|---|
|  |  |  | param.complete(errconf); | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return true; | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 构造错误数据结构 | 
|---|
|  |  |  | * @param {Number} errCode 错误码 | 
|---|
|  |  |  | * @param {Number} errMsg 错误描述 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | buildErrorConfig(errCode, errMsg) { | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | status: errCode, | 
|---|
|  |  |  | message: errMsg | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * 数据处理函数 | 
|---|
|  |  |  | * 根据传入参数不同处理不同数据 | 
|---|
|  |  |  | * @param {String} feature 功能名称 | 
|---|
|  |  |  | * search 地点搜索 | 
|---|
|  |  |  | * suggest关键词提示 | 
|---|
|  |  |  | * reverseGeocoder逆地址解析 | 
|---|
|  |  |  | * geocoder地址解析 | 
|---|
|  |  |  | * getCityList获取城市列表:父集 | 
|---|
|  |  |  | * getDistrictByCityId获取区县列表:子集 | 
|---|
|  |  |  | * calculateDistance距离计算 | 
|---|
|  |  |  | * @param {Object} param 接口参数 | 
|---|
|  |  |  | * @param {Object} data 数据 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | handleData(param,data,feature){ | 
|---|
|  |  |  | if (feature == 'search') { | 
|---|
|  |  |  | var searchResult = data.data; | 
|---|
|  |  |  | var searchSimplify = []; | 
|---|
|  |  |  | for (var i = 0; i < searchResult.length; i++) { | 
|---|
|  |  |  | searchSimplify.push({ | 
|---|
|  |  |  | id: searchResult[i].id || null, | 
|---|
|  |  |  | title: searchResult[i].title || null, | 
|---|
|  |  |  | latitude: searchResult[i].location && searchResult[i].location.lat || null, | 
|---|
|  |  |  | longitude: searchResult[i].location && searchResult[i].location.lng || null, | 
|---|
|  |  |  | address: searchResult[i].address || null, | 
|---|
|  |  |  | category: searchResult[i].category || null, | 
|---|
|  |  |  | tel: searchResult[i].tel || null, | 
|---|
|  |  |  | adcode: searchResult[i].ad_info && searchResult[i].ad_info.adcode || null, | 
|---|
|  |  |  | city: searchResult[i].ad_info && searchResult[i].ad_info.city || null, | 
|---|
|  |  |  | district: searchResult[i].ad_info && searchResult[i].ad_info.district || null, | 
|---|
|  |  |  | province: searchResult[i].ad_info && searchResult[i].ad_info.province || null | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | param.success(data, { | 
|---|
|  |  |  | searchResult: searchResult, | 
|---|
|  |  |  | searchSimplify: searchSimplify | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } else if (feature == 'suggest') { | 
|---|
|  |  |  | var suggestResult = data.data; | 
|---|
|  |  |  | var suggestSimplify = []; | 
|---|
|  |  |  | for (var i = 0; i < suggestResult.length; i++) { | 
|---|
|  |  |  | suggestSimplify.push({ | 
|---|
|  |  |  | adcode: suggestResult[i].adcode || null, | 
|---|
|  |  |  | address: suggestResult[i].address || null, | 
|---|
|  |  |  | category: suggestResult[i].category || null, | 
|---|
|  |  |  | city: suggestResult[i].city || null, | 
|---|
|  |  |  | district: suggestResult[i].district || null, | 
|---|
|  |  |  | id: suggestResult[i].id || null, | 
|---|
|  |  |  | latitude: suggestResult[i].location && suggestResult[i].location.lat || null, | 
|---|
|  |  |  | longitude: suggestResult[i].location && suggestResult[i].location.lng || null, | 
|---|
|  |  |  | province: suggestResult[i].province || null, | 
|---|
|  |  |  | title: suggestResult[i].title || null, | 
|---|
|  |  |  | type: suggestResult[i].type || null | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | param.success(data, { | 
|---|
|  |  |  | suggestResult: suggestResult, | 
|---|
|  |  |  | suggestSimplify: suggestSimplify | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } else if (feature == 'reverseGeocoder') { | 
|---|
|  |  |  | var reverseGeocoderResult = data.result; | 
|---|
|  |  |  | var reverseGeocoderSimplify = { | 
|---|
|  |  |  | address: reverseGeocoderResult.address || null, | 
|---|
|  |  |  | latitude: reverseGeocoderResult.location && reverseGeocoderResult.location.lat || null, | 
|---|
|  |  |  | longitude: reverseGeocoderResult.location && reverseGeocoderResult.location.lng || null, | 
|---|
|  |  |  | adcode: reverseGeocoderResult.ad_info && reverseGeocoderResult.ad_info.adcode || null, | 
|---|
|  |  |  | city: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.city || null, | 
|---|
|  |  |  | district: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.district || null, | 
|---|
|  |  |  | nation: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.nation || null, | 
|---|
|  |  |  | province: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.province || null, | 
|---|
|  |  |  | street: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.street || null, | 
|---|
|  |  |  | street_number: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.street_number || null, | 
|---|
|  |  |  | recommend: reverseGeocoderResult.formatted_addresses && reverseGeocoderResult.formatted_addresses.recommend || null, | 
|---|
|  |  |  | rough: reverseGeocoderResult.formatted_addresses && reverseGeocoderResult.formatted_addresses.rough || null | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | if (reverseGeocoderResult.pois) {//判断是否返回周边poi | 
|---|
|  |  |  | var pois = reverseGeocoderResult.pois; | 
|---|
|  |  |  | var poisSimplify = []; | 
|---|
|  |  |  | for (var i = 0;i < pois.length;i++) { | 
|---|
|  |  |  | poisSimplify.push({ | 
|---|
|  |  |  | id: pois[i].id || null, | 
|---|
|  |  |  | title: pois[i].title || null, | 
|---|
|  |  |  | latitude: pois[i].location && pois[i].location.lat || null, | 
|---|
|  |  |  | longitude: pois[i].location && pois[i].location.lng || null, | 
|---|
|  |  |  | address: pois[i].address || null, | 
|---|
|  |  |  | category: pois[i].category || null, | 
|---|
|  |  |  | adcode: pois[i].ad_info && pois[i].ad_info.adcode || null, | 
|---|
|  |  |  | city: pois[i].ad_info && pois[i].ad_info.city || null, | 
|---|
|  |  |  | district: pois[i].ad_info && pois[i].ad_info.district || null, | 
|---|
|  |  |  | province: pois[i].ad_info && pois[i].ad_info.province || null | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | param.success(data,{ | 
|---|
|  |  |  | reverseGeocoderResult: reverseGeocoderResult, | 
|---|
|  |  |  | reverseGeocoderSimplify: reverseGeocoderSimplify, | 
|---|
|  |  |  | pois: pois, | 
|---|
|  |  |  | poisSimplify: poisSimplify | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | param.success(data, { | 
|---|
|  |  |  | reverseGeocoderResult: reverseGeocoderResult, | 
|---|
|  |  |  | reverseGeocoderSimplify: reverseGeocoderSimplify | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else if (feature == 'geocoder') { | 
|---|
|  |  |  | var geocoderResult = data.result; | 
|---|
|  |  |  | var geocoderSimplify = { | 
|---|
|  |  |  | title: geocoderResult.title || null, | 
|---|
|  |  |  | latitude: geocoderResult.location && geocoderResult.location.lat || null, | 
|---|
|  |  |  | longitude: geocoderResult.location && geocoderResult.location.lng || null, | 
|---|
|  |  |  | adcode: geocoderResult.ad_info && geocoderResult.ad_info.adcode || null, | 
|---|
|  |  |  | province: geocoderResult.address_components && geocoderResult.address_components.province || null, | 
|---|
|  |  |  | city: geocoderResult.address_components && geocoderResult.address_components.city || null, | 
|---|
|  |  |  | district: geocoderResult.address_components && geocoderResult.address_components.district || null, | 
|---|
|  |  |  | street: geocoderResult.address_components && geocoderResult.address_components.street || null, | 
|---|
|  |  |  | street_number: geocoderResult.address_components && geocoderResult.address_components.street_number || null, | 
|---|
|  |  |  | level: geocoderResult.level || null | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | param.success(data,{ | 
|---|
|  |  |  | geocoderResult: geocoderResult, | 
|---|
|  |  |  | geocoderSimplify: geocoderSimplify | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } else if (feature == 'getCityList') { | 
|---|
|  |  |  | var provinceResult = data.result[0]; | 
|---|
|  |  |  | var cityResult = data.result[1]; | 
|---|
|  |  |  | var districtResult = data.result[2]; | 
|---|
|  |  |  | param.success(data,{ | 
|---|
|  |  |  | provinceResult: provinceResult, | 
|---|
|  |  |  | cityResult: cityResult, | 
|---|
|  |  |  | districtResult: districtResult | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } else if (feature == 'getDistrictByCityId') { | 
|---|
|  |  |  | var districtByCity = data.result[0]; | 
|---|
|  |  |  | param.success(data, districtByCity); | 
|---|
|  |  |  | } else if (feature == 'calculateDistance') { | 
|---|
|  |  |  | var calculateDistanceResult = data.result.elements; | 
|---|
|  |  |  | var distance = []; | 
|---|
|  |  |  | for (var i = 0; i < calculateDistanceResult.length; i++){ | 
|---|
|  |  |  | distance.push(calculateDistanceResult[i].distance); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | param.success(data, { | 
|---|
|  |  |  | calculateDistanceResult: calculateDistanceResult, | 
|---|
|  |  |  | distance: distance | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } else if (feature == 'direction') { | 
|---|
|  |  |  | var direction = data.result.routes; | 
|---|
|  |  |  | param.success(data,direction); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | param.success(data); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 构造微信请求参数,公共属性处理 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @param {Object} param 接口参数 | 
|---|
|  |  |  | * @param {Object} param 配置项 | 
|---|
|  |  |  | * @param {String} feature 方法名 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | buildWxRequestConfig(param, options, feature) { | 
|---|
|  |  |  | var that = this; | 
|---|
|  |  |  | options.header = { "content-type": "application/json" }; | 
|---|
|  |  |  | options.method = 'GET'; | 
|---|
|  |  |  | options.success = function (res) { | 
|---|
|  |  |  | var data = res.data; | 
|---|
|  |  |  | if (data.status === 0) { | 
|---|
|  |  |  | that.handleData(param, data, feature); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | param.fail(data); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | options.fail = function (res) { | 
|---|
|  |  |  | res.statusCode = ERROR_CONF.WX_ERR_CODE; | 
|---|
|  |  |  | param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)); | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | options.complete = function (res) { | 
|---|
|  |  |  | var statusCode = +res.statusCode; | 
|---|
|  |  |  | switch(statusCode) { | 
|---|
|  |  |  | case ERROR_CONF.WX_ERR_CODE: { | 
|---|
|  |  |  | param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | case ERROR_CONF.WX_OK_CODE: { | 
|---|
|  |  |  | var data = res.data; | 
|---|
|  |  |  | if (data.status === 0) { | 
|---|
|  |  |  | param.complete(data); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | param.complete(that.buildErrorConfig(data.status, data.message)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | default:{ | 
|---|
|  |  |  | param.complete(that.buildErrorConfig(ERROR_CONF.SYSTEM_ERR, ERROR_CONF.SYSTEM_ERR_MSG)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | return options; | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 处理用户参数是否传入坐标进行不同的处理 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | locationProcess(param, locationsuccess, locationfail, locationcomplete) { | 
|---|
|  |  |  | var that = this; | 
|---|
|  |  |  | locationfail = locationfail || function (res) { | 
|---|
|  |  |  | res.statusCode = ERROR_CONF.WX_ERR_CODE; | 
|---|
|  |  |  | param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)); | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | locationcomplete = locationcomplete || function (res) { | 
|---|
|  |  |  | if (res.statusCode == ERROR_CONF.WX_ERR_CODE) { | 
|---|
|  |  |  | param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | if (!param.location) { | 
|---|
|  |  |  | that.getWXLocation(locationsuccess, locationfail, locationcomplete); | 
|---|
|  |  |  | } else if (that.checkLocation(param)) { | 
|---|
|  |  |  | var location = Utils.getLocationParam(param.location); | 
|---|
|  |  |  | locationsuccess(location); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | class QQMapWX { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 构造函数 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @param {Object} options 接口参数,key 为必选参数 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | constructor(options) { | 
|---|
|  |  |  | if (!options.key) { | 
|---|
|  |  |  | throw Error('key值不能为空'); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.key = options.key; | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * POI周边检索 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @param {Object} options 接口参数对象 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * 参数对象结构可以参考 | 
|---|
|  |  |  | * @see http://lbs.qq.com/webservice_v1/guide-search.html | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | search(options) { | 
|---|
|  |  |  | var that = this; | 
|---|
|  |  |  | options = options || {}; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Utils.polyfillParam(options); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (!Utils.checkKeyword(options)) { | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var requestParam = { | 
|---|
|  |  |  | keyword: options.keyword, | 
|---|
|  |  |  | orderby: options.orderby || '_distance', | 
|---|
|  |  |  | page_size: options.page_size || 10, | 
|---|
|  |  |  | page_index: options.page_index || 1, | 
|---|
|  |  |  | output: 'json', | 
|---|
|  |  |  | key: that.key | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (options.address_format) { | 
|---|
|  |  |  | requestParam.address_format = options.address_format; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (options.filter) { | 
|---|
|  |  |  | requestParam.filter = options.filter; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var distance = options.distance || "1000"; | 
|---|
|  |  |  | var auto_extend = options.auto_extend || 1; | 
|---|
|  |  |  | var region = null; | 
|---|
|  |  |  | var rectangle = null; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //判断城市限定参数 | 
|---|
|  |  |  | if (options.region) { | 
|---|
|  |  |  | region = options.region; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //矩形限定坐标(暂时只支持字符串格式) | 
|---|
|  |  |  | if (options.rectangle) { | 
|---|
|  |  |  | rectangle = options.rectangle; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var locationsuccess = function (result) { | 
|---|
|  |  |  | if (region && !rectangle) { | 
|---|
|  |  |  | //城市限定参数拼接 | 
|---|
|  |  |  | requestParam.boundary = "region(" + region + "," + auto_extend + "," + result.latitude + "," + result.longitude + ")"; | 
|---|
|  |  |  | if (options.sig) { | 
|---|
|  |  |  | requestParam.sig = Utils.getSig(requestParam, options.sig, 'search'); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else if (rectangle && !region) { | 
|---|
|  |  |  | //矩形搜索 | 
|---|
|  |  |  | requestParam.boundary = "rectangle(" + rectangle + ")"; | 
|---|
|  |  |  | if (options.sig) { | 
|---|
|  |  |  | requestParam.sig = Utils.getSig(requestParam, options.sig, 'search'); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | requestParam.boundary = "nearby(" + result.latitude + "," + result.longitude + "," + distance + "," + auto_extend + ")"; | 
|---|
|  |  |  | if (options.sig) { | 
|---|
|  |  |  | requestParam.sig = Utils.getSig(requestParam, options.sig, 'search'); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | wx.request(Utils.buildWxRequestConfig(options, { | 
|---|
|  |  |  | url: URL_SEARCH, | 
|---|
|  |  |  | data: requestParam | 
|---|
|  |  |  | }, 'search')); | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | Utils.locationProcess(options, locationsuccess); | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * sug模糊检索 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @param {Object} options 接口参数对象 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * 参数对象结构可以参考 | 
|---|
|  |  |  | * http://lbs.qq.com/webservice_v1/guide-suggestion.html | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | getSuggestion(options) { | 
|---|
|  |  |  | var that = this; | 
|---|
|  |  |  | options = options || {}; | 
|---|
|  |  |  | Utils.polyfillParam(options); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (!Utils.checkKeyword(options)) { | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var requestParam = { | 
|---|
|  |  |  | keyword: options.keyword, | 
|---|
|  |  |  | region: options.region || '全国', | 
|---|
|  |  |  | region_fix: options.region_fix || 0, | 
|---|
|  |  |  | policy: options.policy || 0, | 
|---|
|  |  |  | page_size: options.page_size || 10,//控制显示条数 | 
|---|
|  |  |  | page_index: options.page_index || 1,//控制页数 | 
|---|
|  |  |  | get_subpois : options.get_subpois || 0,//返回子地点 | 
|---|
|  |  |  | output: 'json', | 
|---|
|  |  |  | key: that.key | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | //长地址 | 
|---|
|  |  |  | if (options.address_format) { | 
|---|
|  |  |  | requestParam.address_format = options.address_format; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //过滤 | 
|---|
|  |  |  | if (options.filter) { | 
|---|
|  |  |  | requestParam.filter = options.filter; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //排序 | 
|---|
|  |  |  | if (options.location) { | 
|---|
|  |  |  | var locationsuccess = function (result) { | 
|---|
|  |  |  | requestParam.location = result.latitude + ',' + result.longitude; | 
|---|
|  |  |  | if (options.sig) { | 
|---|
|  |  |  | requestParam.sig = Utils.getSig(requestParam, options.sig, 'suggest'); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | wx.request(Utils.buildWxRequestConfig(options, { | 
|---|
|  |  |  | url: URL_SUGGESTION, | 
|---|
|  |  |  | data: requestParam | 
|---|
|  |  |  | }, "suggest")); | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | Utils.locationProcess(options, locationsuccess); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | if (options.sig) { | 
|---|
|  |  |  | requestParam.sig = Utils.getSig(requestParam, options.sig, 'suggest'); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | wx.request(Utils.buildWxRequestConfig(options, { | 
|---|
|  |  |  | url: URL_SUGGESTION, | 
|---|
|  |  |  | data: requestParam | 
|---|
|  |  |  | }, "suggest")); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 逆地址解析 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @param {Object} options 接口参数对象 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * 请求参数结构可以参考 | 
|---|
|  |  |  | * http://lbs.qq.com/webservice_v1/guide-gcoder.html | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | reverseGeocoder(options) { | 
|---|
|  |  |  | var that = this; | 
|---|
|  |  |  | options = options || {}; | 
|---|
|  |  |  | Utils.polyfillParam(options); | 
|---|
|  |  |  | var requestParam = { | 
|---|
|  |  |  | coord_type: options.coord_type || 5, | 
|---|
|  |  |  | get_poi: options.get_poi || 0, | 
|---|
|  |  |  | output: 'json', | 
|---|
|  |  |  | key: that.key | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | if (options.poi_options) { | 
|---|
|  |  |  | requestParam.poi_options = options.poi_options | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var locationsuccess = function (result) { | 
|---|
|  |  |  | requestParam.location = result.latitude + ',' + result.longitude; | 
|---|
|  |  |  | if (options.sig) { | 
|---|
|  |  |  | requestParam.sig = Utils.getSig(requestParam, options.sig, 'reverseGeocoder'); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | wx.request(Utils.buildWxRequestConfig(options, { | 
|---|
|  |  |  | url: URL_GET_GEOCODER, | 
|---|
|  |  |  | data: requestParam | 
|---|
|  |  |  | }, 'reverseGeocoder')); | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | Utils.locationProcess(options, locationsuccess); | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 地址解析 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @param {Object} options 接口参数对象 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * 请求参数结构可以参考 | 
|---|
|  |  |  | * http://lbs.qq.com/webservice_v1/guide-geocoder.html | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | geocoder(options) { | 
|---|
|  |  |  | var that = this; | 
|---|
|  |  |  | options = options || {}; | 
|---|
|  |  |  | Utils.polyfillParam(options); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (Utils.checkParamKeyEmpty(options, 'address')) { | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var requestParam = { | 
|---|
|  |  |  | address: options.address, | 
|---|
|  |  |  | output: 'json', | 
|---|
|  |  |  | key: that.key | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //城市限定 | 
|---|
|  |  |  | if (options.region) { | 
|---|
|  |  |  | requestParam.region = options.region; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (options.sig) { | 
|---|
|  |  |  | requestParam.sig = Utils.getSig(requestParam, options.sig, 'geocoder'); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | wx.request(Utils.buildWxRequestConfig(options, { | 
|---|
|  |  |  | url: URL_GET_GEOCODER, | 
|---|
|  |  |  | data: requestParam | 
|---|
|  |  |  | },'geocoder')); | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 获取城市列表 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @param {Object} options 接口参数对象 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * 请求参数结构可以参考 | 
|---|
|  |  |  | * http://lbs.qq.com/webservice_v1/guide-region.html | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | getCityList(options) { | 
|---|
|  |  |  | var that = this; | 
|---|
|  |  |  | options = options || {}; | 
|---|
|  |  |  | Utils.polyfillParam(options); | 
|---|
|  |  |  | var requestParam = { | 
|---|
|  |  |  | output: 'json', | 
|---|
|  |  |  | key: that.key | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (options.sig) { | 
|---|
|  |  |  | requestParam.sig = Utils.getSig(requestParam, options.sig, 'getCityList'); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | wx.request(Utils.buildWxRequestConfig(options, { | 
|---|
|  |  |  | url: URL_CITY_LIST, | 
|---|
|  |  |  | data: requestParam | 
|---|
|  |  |  | },'getCityList')); | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 获取对应城市ID的区县列表 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @param {Object} options 接口参数对象 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * 请求参数结构可以参考 | 
|---|
|  |  |  | * http://lbs.qq.com/webservice_v1/guide-region.html | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | getDistrictByCityId(options) { | 
|---|
|  |  |  | var that = this; | 
|---|
|  |  |  | options = options || {}; | 
|---|
|  |  |  | Utils.polyfillParam(options); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (Utils.checkParamKeyEmpty(options, 'id')) { | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var requestParam = { | 
|---|
|  |  |  | id: options.id || '', | 
|---|
|  |  |  | output: 'json', | 
|---|
|  |  |  | key: that.key | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (options.sig) { | 
|---|
|  |  |  | requestParam.sig = Utils.getSig(requestParam, options.sig, 'getDistrictByCityId'); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | wx.request(Utils.buildWxRequestConfig(options, { | 
|---|
|  |  |  | url: URL_AREA_LIST, | 
|---|
|  |  |  | data: requestParam | 
|---|
|  |  |  | },'getDistrictByCityId')); | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 用于单起点到多终点的路线距离(非直线距离)计算: | 
|---|
|  |  |  | * 支持两种距离计算方式:步行和驾车。 | 
|---|
|  |  |  | * 起点到终点最大限制直线距离10公里。 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * 新增直线距离计算。 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @param {Object} options 接口参数对象 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * 请求参数结构可以参考 | 
|---|
|  |  |  | * http://lbs.qq.com/webservice_v1/guide-distance.html | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | calculateDistance(options) { | 
|---|
|  |  |  | var that = this; | 
|---|
|  |  |  | options = options || {}; | 
|---|
|  |  |  | Utils.polyfillParam(options); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (Utils.checkParamKeyEmpty(options, 'to')) { | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var requestParam = { | 
|---|
|  |  |  | mode: options.mode || 'walking', | 
|---|
|  |  |  | to: Utils.location2query(options.to), | 
|---|
|  |  |  | output: 'json', | 
|---|
|  |  |  | key: that.key | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (options.from) { | 
|---|
|  |  |  | options.location = options.from; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //计算直线距离 | 
|---|
|  |  |  | if(requestParam.mode == 'straight'){ | 
|---|
|  |  |  | var locationsuccess = function (result) { | 
|---|
|  |  |  | var locationTo = Utils.getEndLocation(requestParam.to);//处理终点坐标 | 
|---|
|  |  |  | var data = { | 
|---|
|  |  |  | message:"query ok", | 
|---|
|  |  |  | result:{ | 
|---|
|  |  |  | elements:[] | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | status:0 | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | for (var i = 0; i < locationTo.length; i++) { | 
|---|
|  |  |  | data.result.elements.push({//将坐标存入 | 
|---|
|  |  |  | distance: Utils.getDistance(result.latitude, result.longitude, locationTo[i].lat, locationTo[i].lng), | 
|---|
|  |  |  | duration:0, | 
|---|
|  |  |  | from:{ | 
|---|
|  |  |  | lat: result.latitude, | 
|---|
|  |  |  | lng:result.longitude | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | to:{ | 
|---|
|  |  |  | lat: locationTo[i].lat, | 
|---|
|  |  |  | lng: locationTo[i].lng | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | var calculateResult = data.result.elements; | 
|---|
|  |  |  | var distanceResult = []; | 
|---|
|  |  |  | for (var i = 0; i < calculateResult.length; i++) { | 
|---|
|  |  |  | distanceResult.push(calculateResult[i].distance); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return options.success(data,{ | 
|---|
|  |  |  | calculateResult: calculateResult, | 
|---|
|  |  |  | distanceResult: distanceResult | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Utils.locationProcess(options, locationsuccess); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | var locationsuccess = function (result) { | 
|---|
|  |  |  | requestParam.from = result.latitude + ',' + result.longitude; | 
|---|
|  |  |  | if (options.sig) { | 
|---|
|  |  |  | requestParam.sig = Utils.getSig(requestParam, options.sig, 'calculateDistance'); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | wx.request(Utils.buildWxRequestConfig(options, { | 
|---|
|  |  |  | url: URL_DISTANCE, | 
|---|
|  |  |  | data: requestParam | 
|---|
|  |  |  | },'calculateDistance')); | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Utils.locationProcess(options, locationsuccess); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 路线规划: | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @param {Object} options 接口参数对象 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * 请求参数结构可以参考 | 
|---|
|  |  |  | * https://lbs.qq.com/webservice_v1/guide-road.html | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | direction(options) { | 
|---|
|  |  |  | var that = this; | 
|---|
|  |  |  | options = options || {}; | 
|---|
|  |  |  | Utils.polyfillParam(options); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (Utils.checkParamKeyEmpty(options, 'to')) { | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var requestParam = { | 
|---|
|  |  |  | output: 'json', | 
|---|
|  |  |  | key: that.key | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //to格式处理 | 
|---|
|  |  |  | if (typeof options.to == 'string') { | 
|---|
|  |  |  | requestParam.to = options.to; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | requestParam.to = options.to.latitude + ',' + options.to.longitude; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //初始化局部请求域名 | 
|---|
|  |  |  | var SET_URL_DIRECTION = null; | 
|---|
|  |  |  | //设置默认mode属性 | 
|---|
|  |  |  | options.mode = options.mode || MODE.driving; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //设置请求域名 | 
|---|
|  |  |  | SET_URL_DIRECTION = URL_DIRECTION + options.mode; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (options.from) { | 
|---|
|  |  |  | options.location = options.from; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (options.mode == MODE.driving) { | 
|---|
|  |  |  | if (options.from_poi) { | 
|---|
|  |  |  | requestParam.from_poi = options.from_poi; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (options.heading) { | 
|---|
|  |  |  | requestParam.heading = options.heading; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (options.speed) { | 
|---|
|  |  |  | requestParam.speed = options.speed; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (options.accuracy) { | 
|---|
|  |  |  | requestParam.accuracy = options.accuracy; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (options.road_type) { | 
|---|
|  |  |  | requestParam.road_type = options.road_type; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (options.to_poi) { | 
|---|
|  |  |  | requestParam.to_poi = options.to_poi; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (options.from_track) { | 
|---|
|  |  |  | requestParam.from_track = options.from_track; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (options.waypoints) { | 
|---|
|  |  |  | requestParam.waypoints = options.waypoints; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (options.policy) { | 
|---|
|  |  |  | requestParam.policy = options.policy; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (options.plate_number) { | 
|---|
|  |  |  | requestParam.plate_number = options.plate_number; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (options.mode == MODE.transit) { | 
|---|
|  |  |  | if (options.departure_time) { | 
|---|
|  |  |  | requestParam.departure_time = options.departure_time; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (options.policy) { | 
|---|
|  |  |  | requestParam.policy = options.policy; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var locationsuccess = function (result) { | 
|---|
|  |  |  | requestParam.from = result.latitude + ',' + result.longitude; | 
|---|
|  |  |  | if (options.sig) { | 
|---|
|  |  |  | requestParam.sig = Utils.getSig(requestParam, options.sig, 'direction',options.mode); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | wx.request(Utils.buildWxRequestConfig(options, { | 
|---|
|  |  |  | url: SET_URL_DIRECTION, | 
|---|
|  |  |  | data: requestParam | 
|---|
|  |  |  | }, 'direction')); | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Utils.locationProcess(options, locationsuccess); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | module.exports = QQMapWX; | 
|---|