5d96fd45 by xqz

提交

1 parent dc7a26fb
This diff could not be displayed because it is too large.
......@@ -19,6 +19,7 @@
"vant": "^2.12.48",
"vue": "^2.7.8",
"vue-router": "^3.5.4",
"vuedraggable": "^2.24.3",
"vuex": "^3.6.2"
},
"devDependencies": {
......
......@@ -10,7 +10,7 @@
<link href="<%= htmlWebpackPlugin.options.cdn.css[i] %>" rel="preload" as="style" />
<link href="<%= htmlWebpackPlugin.options.cdn.css[i] %>" rel="stylesheet" />
<% } %> -->
<title><%= webpackConfig.name %></title>
<title>demo</title>
</head>
<body>
<noscript>
......
const api = {
Login: '/user/login',
UserInfo: '/user/userinfo',
UserName: '/user/name'
UserName: '/user/name',
plan: 'apis/api',
session: 'session/os/oauth/token'
}
export default api
......
......@@ -30,3 +30,35 @@ export function getUserName(params) {
hideloading: true
})
}
// 规划
export function getPlan(data, params) {
return request({
url: api.plan,
method: 'post',
data,
params,
hideloading: true
})
}
// 规划2
export function getPlan2(data, params) {
return request({
url: api.plan,
method: 'post',
data,
params,
hideloading: true
})
}
// 获取session
export function getSession(params, data) {
return request({
url: api.session,
method: 'post',
params,
data,
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
})
}
......
......@@ -2,14 +2,14 @@
// 清除浮动
@mixin clearfix {
&:after {
content: "";
content: '';
display: table;
clear: both;
}
}
// 多行隐藏
@mixin textoverflow($clamp:1) {
@mixin textoverflow($clamp: 1) {
display: block;
overflow: hidden;
text-overflow: ellipsis;
......@@ -19,9 +19,26 @@
/*! autoprefixer: ignore next */
-webkit-box-orient: vertical;
}
.city {
font-family: '微软雅黑';
background: rgba(0, 0, 0, 0);
width: 249px;
height: 60px;
font-size: 36px;
text-align: center;
border: 1px #1a1a1a solid;
border-radius: 5px;
}
.text-button {
border: none;
background-color: transparent;
color: #328985;
font-size: 24px;
text-decoration: underline;
cursor: pointer;
}
//flex box
@mixin flexbox($jc:space-between, $ai:center, $fd:row, $fw:nowrap) {
@mixin flexbox($jc: space-between, $ai: center, $fd: row, $fw: nowrap) {
display: flex;
display: -webkit-flex;
flex: 1;
......@@ -34,3 +51,25 @@
flex-wrap: $fw;
-webkit-flex-wrap: $fw;
}
/*定义滚动条高宽及背景
高宽分别对应横竖滚动条的尺寸*/
::-webkit-scrollbar {
width: 16px;
height: 16px;
background-color: #f5f5f5;
z-index: 999;
}
/*定义滚动条轨道
内阴影+圆角*/
::-webkit-scrollbar-track {
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
border-radius: 10px;
background-color: #f5f5f5;
}
/*定义滑块
内阴影+圆角*/
::-webkit-scrollbar-thumb {
border-radius: 10px;
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
background-color: #555;
}
......
<template>
<div class="vant-table">
<table cellspacing="0" class="table" :style="{ width: width }">
<vuedraggable v-model="orginData" :options="{ draggable: this.vuedraggable }" @start="onStart" @end="onEnd">
<tr slot="header">
<th class="th" v-if="showCheck">
<input
type="checkbox"
id="j_cbAll"
:checked="isAllSelected"
@change="selectAllRows"
v-model="isAllSelected"
/>
</th>
<th class="th" v-for="(item, index) in option.column" :key="index" :style="{ width: item.width }">
{{ item.label }}
</th>
</tr>
<tr
v-for="item in orginData"
:key="item.rowNo"
class="list-tr"
@click="handleRowClick(item)"
:class="{ 'selected-row': item.isClick }"
>
<td v-if="showCheck">
<input type="checkbox" :checked="item.isSelected" v-model="item.isSelected" @change="selectRow(item)" />
</td>
<td
v-for="(context, i) in option.column"
:key="i"
:style="[
item[context.tableDataprop] === '已去' ? { color: 'green' } : {},
item.type === 'new' ? { color: 'red' } : {},
{ textAlign: context.align },
{ width: context.width }
]"
>
<slot :name="context.tableDataprop" :item="item"> <span v-html="item[context.tableDataprop]"></span></slot>
<!-- <slot :name="opreate" :item="item"></slot> -->
</td>
</tr>
</vuedraggable>
</table>
<div style="margin: 15px 15px"></div>
</div>
</template>
<script>
import vuedraggable from 'vuedraggable'
import _ from 'lodash'
export default {
name: 'TableVant',
components: { vuedraggable },
props: {
bgcolor: {
type: Object
},
width: {
type: String
},
tableData: {
type: Array
},
filterTable: {
type: Array
},
delTable: {
type: Array
},
option: {
type: Object
},
showCheck: {
type: Boolean,
default: false
},
vuedraggable: {
type: String
},
rowClick: {
type: Boolean,
default: false
}
},
watch: {
tableData: {
handler: function () {
this.orginData = _.cloneDeep(this.tableData) || []
},
deep: true,
immediate: true
},
filterTable: {
handler: function () {
this.filterData = _.cloneDeep(this.filterTable) || []
this.filterFlag = this.filterData.length > 0 ? true : false
},
deep: true,
immediate: true
},
delTable: {
handler: function () {
this.delData = _.cloneDeep(this.delTable) || []
this.deleteFlag = this.delData.length > 0 ? true : false
},
deep: true,
immediate: true
}
},
data() {
return {
orginData: [],
filterData: [],
delData: [],
filterFlag: false,
deleteFlag: false,
isAllSelected: false,
selectedRows: []
}
},
created() {},
mounted() {},
methods: {
onStart() {
this.drag = true
console.log('1', this.orginData)
},
handleRowClick(data) {
if (this.rowClick) {
this.orginData = this.orginData.map(item => {
item.isClick = false
return item
})
this.$set(data, 'isClick', true)
this.$bus.$emit('rowData', data)
}
},
onEnd() {
this.drag = false
console.log('2', this.orginData)
this.$bus.$emit('sortTableData', this.orginData)
},
selectAllRows() {
if (this.isAllSelected) {
this.selectedRows = [...this.orginData]
this.orginData.forEach(item => {
this.$set(item, 'isSelected', true)
})
} else {
this.selectedRows = []
this.orginData.forEach(item => {
this.$set(item, 'isSelected', false)
})
}
this.selectedRows = this.isAllSelected ? this.orginData : []
this.$bus.$emit('selecte', this.selectedRows)
console.log(this.selectedRows)
},
selectRow() {
this.selectedRows = this.orginData.filter(row => row.isSelected)
this.isAllSelected = this.selectedRows.length === this.orginData.length
this.$bus.$emit('selecte', this.selectedRows)
console.log(this.selectedRows)
}
}
}
</script>
<style scoped>
.selected-row {
background-color: yellow;
}
.vant-table {
margin-top: 20px;
}
table {
border-radius: 0.185185rem;
border-collapse: collapse;
/* 合并边框,美化表格样式 */
table-layout: fixed;
table-layout: fixed;
width: 100%;
}
.table {
border-radius: 0.185185rem;
border-collapse: collapse;
/* 合并边框,美化表格样式 */
table-layout: fixed;
display: flex;
table-layout: fixed;
word-wrap: break-word;
word-break: break-all;
}
th,
td {
border: 1px solid black;
/* 添加边框,美化表格样式 */
padding: 1px;
/* 添加内边距,使内容与边框有一定距离 */
}
.th {
height: 1.074074rem;
line-height: 1.074074rem;
background-color: #328985;
color: white;
text-align: center;
font-size: 24px;
}
td {
white-space: pre-wrap;
}
table tr {
margin-bottom: 10px;
/* 调整间距大小 */
}
.filter-tr,
.list-tr {
height: 1.074074rem;
line-height: 1.074074rem;
font-size: 24px;
}
.filter-tr:last-child {
margin-bottom: 10px;
}
tr > td:nth-child(1) {
text-align: center;
}
.del-text {
font-size: 24px;
font-weight: bold;
}
</style>
......@@ -2,7 +2,7 @@
module.exports = {
title: 'vue-h5-template',
baseUrl: 'http://localhost:9018', // 项目地址
baseApi: 'https://test.xxx.com/api', // 本地api请求地址,注意:如果你使用了代理,请设置成'/'
baseApi: '/', // 本地api请求地址,注意:如果你使用了代理,请设置成'/'
APPID: 'xxx',
APPSECRET: 'xxx',
$cdn: 'https://www.sunniejs.cn/static'
......
......@@ -2,7 +2,7 @@
module.exports = {
title: 'vue-h5-template',
baseUrl: 'https://www.xxx.com/', // 正式项目地址
baseApi: 'https://www.xxx.com/api', // 正式api请求地址
baseApi: 'https://tsapi.amap.com', // 正式api请求地址
APPID: 'xxx',
APPSECRET: 'xxx',
$cdn: 'https://www.sunniejs.cn/static'
......
module.exports = {
title: 'vue-h5-template',
baseUrl: 'https://test.xxx.com', // 测试项目地址
baseApi: 'https://test.xxx.com/api', // 测试api请求地址
baseApi: 'https://tsapi.amap.com', // 测试api请求地址
APPID: 'xxx',
APPSECRET: 'xxx',
$cdn: 'https://www.sunniejs.cn/static'
......
......@@ -2,7 +2,7 @@
*格式化时间
*yyyy-MM-dd hh:mm:ss
*/
export function formatDate(time, fmt) {
export function formatDate(time, fmt = 'yyyy-MM-dd') {
if (time === undefined || '') {
return
}
......
......@@ -2,12 +2,13 @@
// https://github.com/zloirock/core-js/blob/master/docs/2019-03-19-core-js-3-babel-and-a-look-into-the-future.md#babelpolyfill
import 'core-js/stable'
import 'regenerator-runtime/runtime'
import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import Bus from '../src/utils/bus' //这是我的路径,正确引用你们的路径
Vue.prototype.$bus = Bus
// 设置 js中可以访问 $cdn
import { $cdn } from '@/config'
Vue.prototype.$cdn = $cdn
......
// 按需全局引入 vant组件
import Vue from 'vue'
import { Button, List, Cell, Tabbar, TabbarItem } from 'vant'
import {
Button,
List,
Cell,
Tabbar,
TabbarItem,
Col,
Row,
Divider,
NavBar,
Toast,
Field,
DatetimePicker,
Dialog,
CellGroup
} from 'vant'
Vue.use(Button)
Vue.use(Cell)
Vue.use(List)
Vue.use(Tabbar).use(TabbarItem)
Vue.use(Tabbar)
.use(TabbarItem)
.use(Col)
.use(Row)
.use(Divider)
.use(NavBar)
.use(Toast)
.use(Field)
.use(DatetimePicker)
.use(Dialog)
.use(CellGroup)
......
......@@ -6,7 +6,7 @@ export const constantRouterMap = [
{
path: '/',
component: () => import('@/views/layouts/index'),
redirect: '/home',
redirect: '/departure',
meta: {
title: '首页',
keepAlive: false
......@@ -23,6 +23,30 @@ export const constantRouterMap = [
name: 'About',
component: () => import('@/views/home/about'),
meta: { title: '关于我', keepAlive: false }
},
{
path: '/departure',
name: 'Departure',
component: () => import('@/views/home/departure'),
meta: { title: '出发列表', keepAlive: false }
},
{
path: '/result',
name: 'Result',
component: () => import('@/views/home/result'),
meta: { title: '规划结果', keepAlive: false }
},
{
path: '/target',
name: 'Target',
component: () => import('@/views/home/target'),
meta: { title: '目的列表', keepAlive: false }
},
{
path: '/about1',
name: 'About1',
component: () => import('@/views/home/about1'),
meta: { title: '关于我', keepAlive: false }
}
]
}
......
const getters = {
userName: state => state.app.userName
getOrder: function (state) {
if (!state.order) {
state.order = JSON.parse(localStorage.getItem('order'))
}
return state.order
},
getCity: function (state) {
if (!state.city) {
state.city = localStorage.getItem('city')
}
return state.order
},
getdepart: function (state) {
if (!state.depart) {
state.depart = JSON.parse(localStorage.getItem('depart'))
}
return state.depart
},
getTarget: function (state) {
if (!state.target) {
state.target = JSON.parse(localStorage.getItem('target'))
}
return state.target
},
getCurentData: function (state) {
if (!state.curentData) {
state.curentData = JSON.parse(localStorage.getItem('curentData'))
}
return state.curentData
}
}
export default getters
......
const state = {
userName: ''
order: localStorage.getItem('order') ? localStorage.getItem('order') : '',
city: localStorage.getItem('city') ? localStorage.getItem('city') : '',
depart: localStorage.getItem('depart') ? localStorage.getItem('depart') : '',
target: localStorage.getItem('target') ? localStorage.getItem('target') : '',
curentData: localStorage.getItem('curentData') ? localStorage.getItem('curentData') : ''
}
const mutations = {
SET_USER_NAME(state, name) {
state.userName = name
SET_ORDER(state, info) {
state.order = info
localStorage.setItem('order', info)
},
SET_CITY(state, info) {
state.city = info
localStorage.setItem('city', info)
},
SET_DEPART(state, info) {
state.depart = info
localStorage.setItem('depart', info)
},
SET_TARGET(state, info) {
state.target = info
localStorage.setItem('target', info)
},
SET_CURENTDATA(state, info) {
state.target = info
localStorage.setItem('curentData', info)
}
}
const actions = {
// 设置name
setUserName({ commit }, name) {
commit('SET_USER_NAME', name)
setOrder({ commit }, info) {
commit('SET_ORDER', info)
},
// 设置城市
setCity({ commit }, info) {
commit('SET_CITY', info)
},
// 设置城市
setDepart({ commit }, info) {
commit('SET_DEPART', info)
},
// 设置城市
setTarget({ commit }, info) {
commit('SET_TARGET', info)
},
// 设置城市
setCurentData({ commit }, info) {
commit('SET_CURENTDATA', info)
}
}
export default {
......
// bus.js文件内容
import Vue from 'vue'
// export default new Vue()
const Bus = new Vue()
export default Bus
......@@ -6,8 +6,8 @@ import { baseApi } from '@/config'
// create an axios instance
const service = axios.create({
baseURL: baseApi, // url = base api url + request url
withCredentials: true, // send cookies when cross-domain requests
timeout: 5000 // request timeout
withCredentials: true // send cookies when cross-domain requests
// timeout: 5000 // request timeout
})
// request拦截器 request interceptor
......@@ -34,8 +34,8 @@ service.interceptors.request.use(
// respone拦截器
service.interceptors.response.use(
response => {
Toast.clear()
const res = response.data
Toast.clear()
if (res.status && res.status !== 200) {
// 登录超时,重新登录
if (res.status === 401) {
......
<template>
<div class="about-container">
<div class="warpper">
<div class="list">
<div class="logo"></div>
<div class="demo-home__title">VUE H5开发模板</div>
<div class="item">
项目地址:
<a href="https://github.com/sunniejs/vue-h5-template">https://github.com/sunniejs/vue-h5-template</a>
</div>
<div class="item">项目作者: sunnie</div>
<div class="item"></div>
<div class="wechat">
<img :src="this.wechat" alt="" />
</div>
<div class="item">关注公众号:回复“加群”即可加 前端仙女群</div>
<div class="item">
{{ userName }}
<van-button v-if="userName == ''" type="warning" size="small" @click="doDispatch">快点我~</van-button>
</div>
<div>
<div class="title">
<van-row type="flex" justify="space-between">
<van-col span="8" class="header-text">业务员:{{ currentData.name }}</van-col>
<van-col span="8" class="header-text">车牌号:{{ currentData.plate }}</van-col>
<van-col span="8" class="header-text">批次:{{ currentData.batch }}</van-col>
</van-row>
<van-row type="flex" style="margin-top: 15px">
<van-col span="8">
<div class="header-text">出发地:{{ currentData.departure }}</div>
</van-col>
<van-col span="8">
<div class="header-text">目的地:{{ currentData.arrival }}</div>
</van-col>
<van-col span="8">
<div class="header-text" style="display: flex">
出发时间:<van-field v-model="currentData.departureDate" size="small" placeholder="请输入时间" />
</div>
</van-col>
</van-row>
</div>
<div>
<Table-vant :option="option1" :tableData="filterTable" v-if="filterTable.length > 0"></Table-vant>
<div style="width: 100%; overflow-x: auto">
<Table-vant :option="option" :tableData="dataList" width="790px"></Table-vant>
</div>
<div style="font-size: 16px; font-weight: bold; margin-top: 20px" v-if="deleteData.length > 0">
从原安排中移除的任务
</div>
<Table-vant :option="option2" :tableData="deleteData" v-if="deleteData.length > 0"></Table-vant>
</div>
<div class="fixed-bottom-right">
<div style="display: flex; justify-content: space-between; margin-top: 10px">
<van-button round plain type="primary" @click="simulatedSampling">模拟取样</van-button>
<van-button round plain type="info" @click="insertSheet1">模拟插单1</van-button>
<van-button round plain type="primary" @click="insertSheet2">模拟插单2</van-button>
</div>
<div style="display: flex; justify-content: space-between; margin-top: 10px">
<van-button round plain type="info" @click="replanning">重新规划</van-button>
<van-button round plain type="info" @click="replanning2">调整后规划</van-button>
<van-button round plain type="info" @click="EnableNavigation">开启导航</van-button>
</div>
</div>
</div>
......@@ -25,89 +48,926 @@
<script>
// 请求接口
import { getUserInfo } from '@/api/user.js'
import { mapGetters } from 'vuex'
import { getPlan, getSession, getPlan2 } from '@/api/user.js'
import TableVant from '@/components/Table.vue'
import { Toast } from 'vant'
import _ from 'lodash'
export default {
components: { TableVant },
data() {
return {
wechat: `${this.$cdn}/wx/640.gif`
currentData: [],
sortTable: [],
dataList: [],
date: '',
start: '',
firstObj: {},
filterTable: [],
deleteData: [],
accessToken: '',
originData: [],
option: {
column: [
{
label: '序号',
tableDataprop: 'rowNo',
width: '50px'
},
{
label: '途经',
tableDataprop: 'hospital',
width: '230px'
},
{
label: '取样数',
tableDataprop: 'pkgs',
width: '50px',
align: 'right'
},
{
label: '里程(km)',
tableDataprop: 'distance',
width: '80px',
align: 'right'
},
{
label: '路程耗时(分钟)',
tableDataprop: 'duration',
width: '90px',
align: 'right'
},
{
label: '停留时长(分钟)',
tableDataprop: 'stopTime',
width: '90px',
align: 'right'
},
{
label: '预计到达时间',
tableDataprop: 'reachDate',
width: '90px',
align: 'right'
},
{
label: '预计离开时间',
tableDataprop: 'leaveDate',
width: '90px',
align: 'right'
},
{
label: '状态',
tableDataprop: 'status',
width: '50px'
}
]
},
option1: {
column: [
{
label: '序号',
tableDataprop: 'rowNo',
width: '50px'
},
{
label: '途经',
tableDataprop: 'hospital',
width: '230px'
},
// {
// label: '取样时间',
// tableDataprop: 'dateTime',
// width: '50px'
// },
{
label: '取样数',
tableDataprop: 'pkgs',
width: '50px',
align: 'right'
},
{
label: '状态',
tableDataprop: 'status',
width: '50px'
}
]
},
option2: {
column: [
{
label: '序号',
tableDataprop: 'rowNo',
width: '50px'
},
{
label: '途经',
tableDataprop: 'hospital',
width: '230px'
},
// {
// label: '取样时间',
// tableDataprop: 'dateTime'
// },
{
label: '取样数',
tableDataprop: 'pkgs',
width: '50px',
align: 'right'
},
{
label: '状态',
tableDataprop: 'status',
width: '50px'
}
]
}
}
},
computed: {
...mapGetters(['userName'])
// ...mapGetters(['order'])
},
mounted() {
this.initData()
this.getSessionId()
this.getDate()
},
created() {
this.$bus.$on('sortTableData', e => (this.dataList = e))
this.currentData = JSON.parse(this.$store.state.app.order)
this.firstObj = this.currentData.customerData[0]
this.originData = _.cloneDeep(this.currentData.customerData)
this.currentData.customerData.shift()
this.dataList = this.currentData.customerData
let arr = [...this.filterTable, ...this.dataList]
arr.forEach((item, index) => {
item.rowNo = index + 1
// this.filterTable[index].rowNo = index
// this.dataList[index].rowNo = index
})
},
methods: {
getDate() {
this.date = new Date()
},
isnavigation(val) {
let that = this
let myLocation = JSON.parse(sessionStorage.getItem('ownChooseLocation'))
if (this.cabinData.longitude && this.cabinData.latitude) {
let Url = ''
switch (val) {
case 'amap':
Url = `https://uri.amap.com/navigation?from=${myLocation.lng},${myLocation.lat},${myLocation.formattedAddress}&to=${that.cabinData.longitude},${that.cabinData.latitude},${that.cabinData.name}&callnative=1`
break
case 'bmap':
Url = `http://api.map.baidu.com/direction?origin=latlng:${myLocation.lat},${myLocation.lng}|name:${myLocation.formattedAddress}&destination=latlng:${that.cabinData.latitude},${that.cabinData.longitude}|name:${that.cabinData.name}&mode=driving&origin_region=${myLocation.city}&destination_region=${that.cabinData.cityName}&output=html&src=webapp.baidu.openAPIdemo`
break
}
location.href = Url
} else {
// this.$message({
// message: '请先确认您的起点和终点位置',
// type: 'warning',
// })
}
},
// 请求数据案例
initData() {
initData(list) {
Toast.loading({
duration: 0
})
// let destinations = arr.map(item => item.coordinate).join(';')
// 请求接口数据,仅作为展示,需要配置src->config下环境文件
const params = { user: 'sunnie' }
getUserInfo(params)
.then(() => {})
console.log('123', list)
// return
let arr = _.cloneDeep(list)
arr.forEach((item, index) => {
// if (item.dateTime1) {
// item.dateTime = item.dateTime1
// }
item.rowNo = index + 1
return item
})
const data = {
name: this.currentData.name,
plate: this.currentData.plate,
batch: '第一批',
departure: this.currentData.departure,
arrival: this.currentData.arrival,
departureDate: this.currentData.departureDate,
customerData: arr
}
const params = {
method: 'GetRouteMatrix_test',
format: 'json',
sessionId: this.accessToken,
sign: '203EF639BA15A6E001B59DB78AB81470B7893CAF',
appKey: 'dd48c515fcde43bea0b5bd0b8f77e119',
v: '1.0'
}
getPlan(data, params)
.then(res => {
Toast.clear()
let newArr = JSON.parse(res).data
console.log('返回的数据', newArr)
// if (!this.filterTable.length) {
// newArr.shift()
// }
newArr.shift()
console.log(arr)
let sortedArray = newArr.map(item1 =>
arr.find(item2 => {
if (item2.hospital + item2.dateTime == item1.returnName) {
item2.distance = item1.distance.toFixed(2)
item2.duration = item1.duration
item2.stopTime = item1.stopTime
item2.reachDate = item1.reachDate
item2.leaveDate = item1.leaveDate
// item2.dateTime1 = _.cloneDeep(item2.dateTime)
// item2.dateTime = item1.timeSlot.replace('-', '<br/>')
return item2
}
})
)
this.dataList = sortedArray
console.log('aaaaa', sortedArray)
let arrs = [...this.filterTable, ...this.dataList]
arrs.forEach((item, index) => {
item.rowNo = index + 1
// this.filterTable[index].rowNo = index
// this.dataList[index].rowNo = index
})
})
.catch(() => {})
// this.$nextTick(() => {
// let result = {
// errcode: '10000',
// errmsg: 'OK',
// errdetail: null,
// data: [
// {
// number: 0,
// origin: '117.13394400,36.67904500',
// destination: '117.13394400,36.67904500',
// code: 0,
// distance: 6748,
// duration: 2160,
// toll: 0,
// restriction: 0
// },
// {
// number: 0,
// origin: '117.13394400,36.67904500',
// destination: '117.08718600,36.65631700',
// code: 0,
// distance: 6748,
// duration: 2160,
// toll: 0,
// restriction: 0
// },
// {
// number: 1,
// origin: '117.08718600,36.65631700',
// destination: '117.01788200,36.64911300',
// code: 0,
// distance: 6584,
// duration: 1560,
// toll: 0,
// restriction: 0
// },
// {
// number: 2,
// origin: '117.01788200,36.64911300',
// destination: '117.03081400,36.65417800',
// code: 0,
// distance: 2509,
// duration: 960,
// toll: 0,
// restriction: 0
// },
// {
// number: 3,
// origin: '117.03081400,36.65417800',
// destination: '117.04783900,36.64556100',
// code: 0,
// distance: 2891,
// duration: 900,
// toll: 0,
// restriction: 0
// },
// {
// number: 4,
// origin: '117.04783900,36.64556100',
// destination: '116.96255900,36.63623600',
// code: 0,
// distance: 12334,
// duration: 3480,
// toll: 0,
// restriction: 0
// },
// {
// number: 5,
// origin: '116.96255900,36.63623600',
// destination: '116.95988200,36.62819100',
// code: 0,
// distance: 1972,
// duration: 600,
// toll: 0,
// restriction: 0
// },
// {
// number: 6,
// origin: '116.95988200,36.62819100',
// destination: '116.92826100,36.65210900',
// code: 0,
// distance: 7447,
// duration: 1380,
// toll: 0,
// restriction: 0
// },
// {
// number: 8,
// origin: '116.89177900,36.66887900',
// destination: '116.91937000,36.72000800',
// code: 0,
// distance: 9551,
// duration: 1740,
// toll: 0,
// restriction: 0
// }
// ]
// }
// let newArr = result.data
// console.log('返回的数据', newArr)
// console.log(arr)
// // newArr.unshift(this.currentData.customerData[0])
// let sortedArray = newArr.map(item1 => arr.find(item2 => item2.coordinate === item1.destination))
// // sortedArray.unshift(arr[0])
// this.dataList = sortedArray
// console.log('aaaaa', sortedArray)
// let arrs = [...this.filterTable, ...this.dataList]
// arrs.forEach((item, index) => {
// item.rowNo = index + 1
// // this.filterTable[index].rowNo = index
// // this.dataList[index].rowNo = index
// })
// })
},
initData2(list) {
Toast.loading({
duration: 0
})
// let destinations = arr.map(item => item.coordinate).join(';')
// 请求接口数据,仅作为展示,需要配置src->config下环境文件
console.log('123', list)
// return
let arr = _.cloneDeep(list)
arr.forEach((item, index) => {
// if (item.dateTime1) {
// item.dateTime = item.dateTime1
// }
item.rowNo = index + 1
return item
})
const data = {
name: this.currentData.name,
plate: this.currentData.plate,
batch: '第一批',
departure: this.currentData.departure,
arrival: this.currentData.arrival,
departureDate: this.currentData.departureDate,
customerData: arr
}
const params = {
method: 'GetRoutePlan_test1',
format: 'json',
sessionId: this.accessToken,
sign: '203EF639BA15A6E001B59DB78AB81470B7893CAF',
appKey: 'dd48c515fcde43bea0b5bd0b8f77e119',
v: '1.0'
}
getPlan2(data, params)
.then(res => {
Toast.clear()
let newArr = JSON.parse(res).data
console.log('返回的数据', newArr)
// if (!this.filterTable.length) {
// newArr.shift()
// }
newArr.shift()
console.log(arr)
let sortedArray = newArr.map(item1 =>
arr.find(item2 => {
if (item2.hospital + item2.dateTime == item1.returnName) {
item2.distance = item1.distance.toFixed(2)
item2.duration = item1.duration
item2.stopTime = item1.stopTime
item2.reachDate = item1.reachDate
item2.leaveDate = item1.leaveDate
return item2
}
})
)
this.dataList = sortedArray
console.log('aaaaa', sortedArray)
let arrs = [...this.filterTable, ...this.dataList]
arrs.forEach((item, index) => {
item.rowNo = index + 1
// this.filterTable[index].rowNo = index
// this.dataList[index].rowNo = index
})
})
.catch(() => {})
// this.$nextTick(() => {
// let result = {
// errcode: '10000',
// errmsg: 'OK',
// errdetail: null,
// data: [
// {
// number: 0,
// origin: '117.13394400,36.67904500',
// destination: '117.13394400,36.67904500',
// code: 0,
// distance: 6748,
// duration: 2160,
// toll: 0,
// restriction: 0
// },
// {
// number: 0,
// origin: '117.13394400,36.67904500',
// destination: '117.08718600,36.65631700',
// code: 0,
// distance: 6748,
// duration: 2160,
// toll: 0,
// restriction: 0
// },
// {
// number: 1,
// origin: '117.08718600,36.65631700',
// destination: '117.01788200,36.64911300',
// code: 0,
// distance: 6584,
// duration: 1560,
// toll: 0,
// restriction: 0
// },
// {
// number: 2,
// origin: '117.01788200,36.64911300',
// destination: '117.03081400,36.65417800',
// code: 0,
// distance: 2509,
// duration: 960,
// toll: 0,
// restriction: 0
// },
// {
// number: 3,
// origin: '117.03081400,36.65417800',
// destination: '117.04783900,36.64556100',
// code: 0,
// distance: 2891,
// duration: 900,
// toll: 0,
// restriction: 0
// },
// {
// number: 4,
// origin: '117.04783900,36.64556100',
// destination: '116.96255900,36.63623600',
// code: 0,
// distance: 12334,
// duration: 3480,
// toll: 0,
// restriction: 0
// },
// {
// number: 5,
// origin: '116.96255900,36.63623600',
// destination: '116.95988200,36.62819100',
// code: 0,
// distance: 1972,
// duration: 600,
// toll: 0,
// restriction: 0
// },
// {
// number: 6,
// origin: '116.95988200,36.62819100',
// destination: '116.92826100,36.65210900',
// code: 0,
// distance: 7447,
// duration: 1380,
// toll: 0,
// restriction: 0
// },
// {
// number: 8,
// origin: '116.89177900,36.66887900',
// destination: '116.91937000,36.72000800',
// code: 0,
// distance: 9551,
// duration: 1740,
// toll: 0,
// restriction: 0
// }
// ]
// }
// let newArr = result.data
// console.log('返回的数据', newArr)
// console.log(arr)
// // newArr.unshift(this.currentData.customerData[0])
// let sortedArray = newArr.map(item1 => arr.find(item2 => item2.coordinate === item1.destination))
// // sortedArray.unshift(arr[0])
// this.dataList = sortedArray
// console.log('aaaaa', sortedArray)
// let arrs = [...this.filterTable, ...this.dataList]
// arrs.forEach((item, index) => {
// item.rowNo = index + 1
// // this.filterTable[index].rowNo = index
// // this.dataList[index].rowNo = index
// })
// })
},
// Action 通过 store.dispatch 方法触发
doDispatch() {
this.$store.dispatch('setUserName', '真乖,赶紧关注公众号,组织都在等你~')
getSessionId() {
let params = {
client_id: 'dd48c515fcde43bea0b5bd0b8f77e119',
grant_type: 'client_credentials',
client_secret: 'c6602114c9ba488b877d0d84b0e5e700',
scope: 'read'
}
getSession(params, {}).then(res => {
this.accessToken = res.access_token
// this.initData(this.currentData.customerData)
this.replanning()
})
},
goGithub() {
window.location.href = 'https://github.com/sunniejs/vue-h5-template'
}
}
}
</script>
getRadom(arr) {
if (arr.length === 0) {
return
}
return Math.round(Math.random() * (arr.length - 1))
},
// 模拟取样
simulatedSampling() {
// this.getRadom(this.currentData.customerData)
// console.log(this.getRadom(this.dataList))
// this.dataList.forEach(item => (item.status = '未去'))
let newArr = [...this.filterTable, ...this.dataList]
this.filterTable = []
for (let i = 0; i <= newArr.length - 1; i++) {
this.$set(newArr[i], `status`, '未去')
}
var num = this.getRadom(newArr) || 1
console.log(num)
// this.currentData.customerData[this.getRadom(this.currentData.customerData)].status = '已去'
for (let i = 0; i < num; i++) {
this.$set(newArr[i], `status`, '已去')
}
this.filterTable = newArr.filter(item => item.status == '已去')
this.dataList = newArr.filter(item => item.status == '未去')
let arr = [...this.filterTable, ...this.dataList]
arr.forEach((item, index) => {
item.rowNo = index + 1
// this.filterTable[index].rowNo = index
// this.dataList[index].rowNo = index
})
console.log(this.filterTable)
console.log(this.dataList)
},
// 重新规划
replanning() {
let arr = []
if (!this.filterTable.length) {
arr = [this.firstObj, ...this.dataList].filter(item => item.status != '已去')
} else {
arr = [this.filterTable[this.filterTable.length - 1], ...this.dataList.filter(item => item.status != '已去')]
}
this.initData(arr)
},
// 调整后规划
replanning2() {
let arr = []
if (!this.filterTable.length) {
arr = [this.firstObj, ...this.dataList].filter(item => item.status != '已去')
} else {
arr = [this.filterTable[this.filterTable.length - 1], ...this.dataList.filter(item => item.status != '已去')]
}
this.initData2(arr)
},
// 调整顺序
sequence() {},
// 模拟插单1
insertSheet1() {
this.judgePerson(1)
// this.dataList = this.dataList.sort(function (a, b) {
// var time1 = a.dateTime.split(':')
// var time2 = b.dateTime.split(':')
// var hour1 = parseInt(time1[0])
// var hour2 = parseInt(time2[0])
<style lang="scss">
.about-container {
/* 你的命名空间 */
background: #fff;
height: 100vh;
box-sizing: border-box;
.warpper {
padding: 50px 12px 12px 12px;
.list {
display: flex;
flex-direction: column;
align-items: center;
color: #666;
font-size: 14px;
.demo-home__title {
margin: 0 0 6px;
font-size: 32px;
.demo-home__title img,
.demo-home__title span {
display: inline-block;
vertical-align: middle;
// var minute1 = parseInt(time1[1])
// var minute2 = parseInt(time2[1])
// if (hour1 < hour2) {
// return -1
// } else if (hour1 > hour2) {
// return 1
// } else {
// if (minute1 < minute2) {
// return -1
// } else if (minute1 > minute2) {
// return 1
// } else {
// return 0
// }
// }
// })
let arr = [...this.filterTable, ...this.dataList]
arr.forEach((item, index) => {
item.rowNo = index + 1
// this.filterTable[index].rowNo = index
// this.dataList[index].rowNo = index
})
},
// 模拟插单2
insertSheet2() {
let num = this.getRadom(this.dataList)
this.deleteData = [this.dataList[num]]
console.log(this.deleteData)
this.dataList.splice(num, 1)
this.judgePerson(2)
let arr = [...this.filterTable, ...this.dataList]
console.log(arr)
arr.forEach((item, index) => {
item.rowNo = index + 1
// this.filterTable[index].rowNo = index
// this.dataList[index].rowNo = index
})
},
judgePerson(type) {
// this.dataList.splice(this.getRadom(this.dataList), 0,)
// array.splice(array.length,0,6,8,9);//第二个参数为0的时候,是可以添加参数的,1的时候是删除
if (this.currentData.name == '田耀中') {
if (type == 1) {
this.dataList.splice(this.getRadom(this.dataList), 0, {
rowNo: [...this.dataList, ...this.filterTable].length + 1,
hospital: '聊城市东昌府区妇幼保健院(两癌)',
address: '山东省聊城市东昌府区振兴西路129号',
dateTime: '16:40',
stopTime: 50,
adcode: '340100',
batch: '1',
pkgs: 100,
type: 'new',
coordinate: '115.95710000,36.46834600',
status: '未去'
})
} else {
this.dataList.splice(this.getRadom(this.dataList), 0, {
rowNo: [...this.dataList, ...this.filterTable].length + 1,
hospital: '聊城市茌平区洪官屯镇卫生院',
address: '聊城市茌平区洪官屯镇政府驻地',
dateTime: '15:47',
stopTime: 15,
adcode: '340100',
batch: '1',
pkgs: 100,
type: 'new',
coordinate: '116.06041900,36.39670700',
status: '未去'
})
}
}
.item {
font-size: 14px;
line-height: 34px;
a {
text-decoration: underline;
} else if (this.currentData.name == '路飞') {
if (type == 1) {
this.dataList.splice(this.getRadom(this.dataList), 0, {
rowNo: [...this.dataList, ...this.filterTable].length + 1,
hospital: '德州市立医院',
address: '山东省德州市德城区三八路1766号',
dateTime: '12:55',
adcode: '340100',
stopTime: 90,
pkgs: 2,
batch: '1',
type: 'new',
coordinate: '116.29370300,37.45320200',
status: '未去'
})
} else {
this.dataList.splice(this.getRadom(this.dataList), 0, {
rowNo: [...this.dataList, ...this.filterTable].length + 1,
hospital: '德棉医院',
address: '德州市运河开发区纺织大街522号',
dateTime: '14:37',
stopTime: 20,
adcode: '340100',
batch: '1',
pkgs: 0,
type: 'new',
coordinate: '116.27572300,37.45761700',
status: '未去'
})
}
.van-button {
/* vant-ui 元素*/
background: #ff5500;
} else if (this.currentData.name == '王东') {
if (type == 1) {
this.dataList.splice(this.getRadom(this.dataList), 0, {
rowNo: [...this.dataList, ...this.filterTable].length + 1,
hospital: '武警山东总队医院',
address: '山东省济南市历下区浆水泉路12--8号',
dateTime: '14:45',
adcode: '340100',
batch: '1',
stopTime: 15,
pkgs: 100,
type: 'new',
coordinate: '117.08718600,36.65631700',
status: '未去'
})
} else {
this.dataList.splice(this.getRadom(this.dataList), 0, {
rowNo: [...this.dataList, ...this.filterTable].length + 1,
hospital: '济南汇安健康管理有限公司历下门诊部',
address: '济南市历下区文化西路15号',
dateTime: '12:05',
batch: '1',
stopTime: 120,
adcode: '340100',
pkgs: 100,
type: 'new',
coordinate: '117.03081400,36.65417800',
status: '未去'
})
}
} else if (this.currentData.name == '尹逊武') {
if (type == 1) {
this.dataList.splice(this.getRadom(this.dataList), 0, {
rowNo: [...this.dataList, ...this.filterTable].length + 1,
batch: '1',
hospital: '山东省中医院(西院)',
address: '山东省济南市文化西路42号',
dateTime: '11:25',
stopTime: 30,
pkgs: 100,
coordinate: '117.02325300,36.65510600',
type: 'new',
status: '未去'
})
} else {
this.dataList.splice(this.getRadom(this.dataList), 0, {
rowNo: [...this.dataList, ...this.filterTable].length + 1,
batch: '1',
hospital: '山东省千佛山医院',
address: '经十路山师东路',
dateTime: '13:40',
stopTime: 20,
pkgs: 100,
coordinate: '117.04485100,36.64754900',
type: 'new',
status: '未去'
})
}
} else {
if (this.currentData.batch == '第一批') {
this.dataList.splice(this.getRadom(this.dataList), 0, {
rowNo: [...this.dataList, ...this.filterTable].length + 1,
batch: '1',
hospital: '济南样本室对接点',
address: '济南市历下区颖秀路2755号',
dateTime: '19:45',
stopTime: 10,
pkgs: '-',
coordinate: '117.13394400,36.67904500',
type: 'new',
status: '未去'
})
} else {
this.dataList.splice(this.getRadom(this.dataList), 0, {
rowNo: [...this.dataList, ...this.filterTable].length + 1,
batch: '2',
hospital: '济南长途汽车总站对接点',
address: '济南市天桥区济洛路131号',
dateTime: '21:45',
stopTime: 15,
pkgs: '-',
coordinate: '116.99360600,36.68543900',
type: 'new',
status: '未去'
})
}
}
},
// 开启导航
EnableNavigation() {
console.log(this.dataList)
// this.dataList.map(item => item.coordinate).join(';')
this.dataList.map(item => item.coordinate)
let arr = []
if (!this.filterTable.length) {
arr = [this.firstObj, ...this.dataList].filter(item => item.status == '未去')
} else {
arr = [this.filterTable[this.filterTable.length - 1], ...this.dataList.filter(item => item.status != '已去')]
}
let obj = {
// 起点
startingPoint: arr[0].coordinate,
startingName: arr[0].hospital,
// 终点
terminus: arr[arr.length - 1].coordinate,
terminusName: arr[arr.length - 1].hospital
.logo {
width: 120px;
height: 120px;
background: url($cdn + '/weapp/logo.png') center / contain no-repeat;
// 途经点
// 116.402796,39.936915
// pointOfPassage: `${this.dataList.map(item => item.coordinate).join('|')},midwaypoint`
}
.wechat {
width: 200px;
height: 200px;
img {
width: 100%;
height: auto;
// console.log(obj)
let url = ''
arr.forEach((item, index) => {
if (index > 0 && index < arr.length - 1) {
url +=
`&via[${index - 1}][adcode]=${item.adcode}` +
`&via[${index - 1}][id]` +
`&via[${index - 1}][lnglat]=${item.coordinate}` +
`&via[${index - 1}][modxy]=${item.coordinate}` +
`&via[${index - 1}][name]=${item.hospital}` +
`&via[${index - 1}][poitype]`
}
}
})
let aurl = arr.forEach((item, index) => {
if (index > 0 && index < arr.length - 1) {
url += `&via[${index - 1}]=${item.coordinate},${item.hospital}`
}
})
console.log('123', url)
this.mapUrl = `https://ditu.amap.com/dir?dateTime=now&from[adcode]=&from[id]=&from[poitype]=&to[adcode]=&to[id]=&to[poitype]=&type=car&policy=2&from[lnglat]=${obj.startingPoint}&from[modxy]=${obj.startingPoint}&from[name]=${obj.startingName}&to[lnglat]=${obj.terminus}&to[modxy]=${obj.terminus}&to[name]=${obj.terminusName}${url}`
console.log(this.mapUrl)
window.open(this.mapUrl)
// location.assign(this.mapUrl)
let a = `https://uri.amap.com/navigation?from=${this.dataList[0].coordinate},${this.dataList[0].hospital}
&to=${this.dataList[this.dataList.length - 1].coordinate},${this.dataList[this.dataList.length - 1].hospital}
&via=${aurl}
&mode=car
&callnative=1
&src=mypage
&policy=1
&coordinate=gaode
&callnative`
console.log(a)
// window.open(a)
return
// location.href = `https://uri.amap.com/navigation?
// from=${this.dataList[0].coordinate}
// &to=${this.dataList[0].coordinate}
// &via=${this.dataList.map(item => item.coordinate).join(';')}
// &mode=car&policy=1&coordinate=gaode&callnative=1`
}
}
}
</script>
<style lang="scss" scoped>
.title {
padding: 10px;
}
.header-text {
font-size: 24px;
font-weight: 800;
}
.table-box {
margin: 12px 0px;
.th-row {
height: 56px;
line-height: 56px;
background: #ebf1f7;
padding: 0px 12px;
font-size: 36px;
}
.tb-row {
font-size: 48px;
height: 56px;
line-height: 56px;
padding: 0px 12px;
}
}
.fixed-bottom-right {
// position: fixed;
margin-top: 80px;
bottom: 20px;
right: 0px;
width: 100%;
}
</style>
......
<template>
<div>
<div class="title">
<van-row type="flex" justify="space-between">
<van-col span="8" class="header-text">业务员:{{ curentData.name }}</van-col>
<van-col span="8">
<div class="header-text" style="display: flex">
出发时间:
<!-- <van-field v-model="curentData.startTime" size="small" placeholder="请输入时间" /> -->
{{ curentData.startTime | formatDate('hh:mm:ss') }}
</div>
</van-col>
<van-col span="8" class="header-text">车牌号:{{ curentData.plate }}</van-col>
<!-- <van-col span="8" class="header-text">批次:{{ curentData.batch }}</van-col> -->
</van-row>
<van-row type="flex" style="margin-top: 15px">
<van-col span="8">
<div class="header-text">出发地:{{ curentData.arrival }}</div>
</van-col>
<van-col span="8">
<!-- dataList[dataList.length - 1].hospital -->
<div class="header-text">目的地:{{ curentData.departure }}</div>
</van-col>
<van-col span="8">
<div class="header-text" style="display: flex">
回程时间:
<!-- <van-field v-model="curentData.startTime" size="small" placeholder="请输入时间" /> -->
{{ curentData.lastArrivalTime | formatDate('hh:mm:ss') }}
</div>
</van-col>
</van-row>
<van-row type="flex" style="margin-top: 15px">
<van-col span="8">
<!-- dataList[dataList.length - 1].hospital -->
<div class="header-text">总里程:{{ curentData.totalDistance }}</div>
</van-col>
<van-col span="8">
<div class="header-text" style="display: flex">
总耗时:
<!-- <van-field v-model="curentData.startTime" size="small" placeholder="请输入时间" /> -->
{{ curentData.totalTimes }}
</div>
</van-col>
<!-- <van-col span="8">
<div class="header-text" style="display: flex">
到达时间:
{{ curentData.startTime | formatDate('hh:mm:ss') }}
</div>
</van-col> -->
</van-row>
</div>
<div>
<Table-vant :option="option1" :tableData="filterTable" v-if="filterTable.length > 0"></Table-vant>
<div style="width: 100%; overflow-x: auto">
<Table-vant
:option="option"
:tableData="dataList"
width="790px"
vuedraggable=".list-tr"
:rowClick="true"
></Table-vant>
</div>
<div style="font-size: 16px; font-weight: bold; margin-top: 20px" v-if="deleteData.length > 0">
从原安排中移除的任务
</div>
<Table-vant :option="option2" :tableData="deleteData" v-if="deleteData.length > 0"></Table-vant>
</div>
<div class="fixed-bottom-right">
<div style="display: flex; justify-content: space-between; margin-top: 10px">
<van-button round plain type="primary" @click="simulatedSampling">模拟取样</van-button>
<van-button round plain type="info" @click="insertOrder">模拟插单1</van-button>
<van-button round plain type="primary" @click="insertOrder1">模拟插单2</van-button>
</div>
<div style="display: flex; justify-content: space-between; margin-top: 10px">
<van-button round plain type="info" @click="replanning">重新规划</van-button>
<van-button round plain type="info" @click="replanning2">调整后规划</van-button>
<van-button round plain type="info" @click="EnableNavigation">开启导航</van-button>
</div>
<div style="display: flex; justify-content: space-between; margin-top: 10px">
<van-button round plain type="info" @click="adjustTime()">调整时间</van-button>
</div>
<!-- <div style="display: flex; justify-content: space-between; margin-top: 10px">
<van-button round plain type="info" @click="nextOrder()">下一条</van-button>
<van-button round plain type="info" @click="lastOrder()">上一条</van-button>
</div> -->
</div>
<van-dialog
v-model="show"
v-if="show"
title="插单"
show-cancel-button
:before-close="handleInsertOrder"
@opened="openDialog"
>
城市:
<select name="pets" id="pet-select" v-model="city" class="city" @change="cityChage($event)">
<option v-for="item in cityOptions" :key="item.value" :value="item.value">{{ item.label }}</option>
</select>
<div style="width: 100%; overflow: auto; margin-bottom: 50px; height: 500px">
<Table-vant :option="option3" :tableData="insertData" width="470px" :showCheck="true">
<template v-slot:timeInterval="{ item }">
<input type="text" v-model="item.timeInterval" style="width: 80%; height: 25px" />
</template>
<template v-slot:vehicleType="{ item }">
<div>{{ item.vehicleType == 1 ? '电动汽车' : '电动车' }}</div>
</template>
</Table-vant>
</div>
</van-dialog>
<van-dialog
v-model="TimeShow"
v-if="TimeShow"
title="调整时间"
confirmButtonText="调整规划"
show-cancel-button
:before-close="handleChangeTime"
>
<div>
<van-cell-group>
<van-field v-model="rowData.hospital" readonly label="医院" placeholder="" />
</van-cell-group>
<div>
<van-cell-group style="display: flex">
<div
style="
color: #646566;
text-align: left;
word-wrap: break-word;
font-size: 3.733333vw;
line-height: 40px;
width: -webkit-fill-available;
"
>
取样时间段:
</div>
<van-field v-model="date1" label="" placeholder="" span="12" />
<span style="line-height: 40px">——</span>
<van-field v-model="date2" label="" placeholder="" span="12" />
</van-cell-group>
</div>
</div>
</van-dialog>
</div>
</template>
<script>
// 请求接口
import { getPlan, getSession, getPlan2 } from '@/api/user.js'
import TableVant from '@/components/Table.vue'
import { Toast } from 'vant'
import _ from 'lodash'
export default {
components: { TableVant },
data() {
return {
sortTable: [],
dataList: [],
date1: '',
date2: '',
insertType: 1,
TimeShow: false,
index: 0,
curentData: {},
rowData: {},
cityIndex: 0,
targetData: [],
city: '',
departureData: [],
allReturnData: [],
flag: 1,
date: '',
show: false,
start: '',
firstObj: {},
filterTable: [],
deleteData: [],
accessToken: '',
originData: [],
checkeData: [],
orginInsertData: [
{
name: '',
plate: '',
departure: '',
arrival: '',
departureDate: '06:30',
customerData: [
{
rowNo: '2',
batch: '1',
hospital: '济南西站对接点',
address: '济南市槐荫区齐鲁大道6号',
dateTime: '07:50',
stopTime: 20,
pkgs: 0,
coordinate: '116.89177900,36.66887900',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '3',
batch: '1',
hospital: '济南和合医学检验有限公司',
address: '槐荫区美里湖555号路海那城总部42号楼',
dateTime: '08:55',
stopTime: 15,
pkgs: 0,
coordinate: '116.91937000,36.72000800',
isOrigin: 'N',
vehicleType: '1',
timeInterval: '09:00,10:00'
},
{
rowNo: '4',
batch: '1',
hospital: '山东第一医科大学附属皮肤病医院',
address: '济南市经十路27397号',
dateTime: '09:30',
stopTime: 10,
pkgs: 100,
coordinate: '116.92826100,36.65210900',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '5',
batch: '1',
hospital: '山东禾力升医学检验实验室有限公司',
address: '济南市市中区南辛庄西路丰润 怡邻居西门',
dateTime: '10:00',
stopTime: 10,
pkgs: 100,
coordinate: '116.96255900,36.63623600',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '6',
batch: '1',
hospital: '市中慢病第四人民医院青龙山分院',
address: '山东省济南市市中区南辛庄西路272号',
dateTime: '10:20',
stopTime: 40,
pkgs: 100,
coordinate: '116.95988200,36.62819100',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '7',
batch: '1',
hospital: '山东省医学科学院放射医学研究所',
address: '济南经十路89号9956',
dateTime: '11:15',
stopTime: 15,
pkgs: 100,
coordinate: '117.01788200,36.64911300',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '8',
batch: '1',
hospital: '山东省分析测试中心',
address: '山东省济南市历下区科院路19号详情',
dateTime: '11:40',
stopTime: 10,
pkgs: 100,
coordinate: '117.04783900,36.64556100',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '9',
batch: '1',
hospital: '济南汇安健康管理有限公司历下门诊部',
address: '济南市历下区文化西路15号',
dateTime: '12:05',
stopTime: 120,
pkgs: 100,
coordinate: '117.03081400,36.65417800',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '10',
batch: '1',
hospital: '武警山东总队医院',
address: '山东省济南市历下区浆水泉路12--8号',
dateTime: '14:45',
stopTime: 15,
pkgs: 100,
coordinate: '117.08718600,36.65631700',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '11',
batch: '1',
hospital: '济南样本室对接点',
address: '济南市历下区颖秀路2755号',
dateTime: '15:20',
stopTime: 30,
pkgs: 100,
coordinate: '117.13394400,36.67904500',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '2',
batch: '1',
hospital: '山东大学齐鲁医院',
address: '济南市文化西路107号',
dateTime: '08:50',
stopTime: 190,
pkgs: 100,
coordinate: '117.01839000,36.65659000',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '3',
batch: '1',
hospital: '山东省中医院(西院)',
address: '山东省济南市文化西路42号',
dateTime: '11:25',
stopTime: 30,
pkgs: 100,
coordinate: '117.02325300,36.65510600',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南市中医医院1',
address: '山东省济南市槐荫区美里路555号海那城总部24号楼101单元401',
dateTime: '12:05',
stopTime: 30,
pkgs: 100,
coordinate: '116.91984000,36.72078200',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '5',
batch: '1',
hospital: '济南丽合医疗美容医院有限公司',
address: '山东省济南市历下区黑虎泉北路61号',
dateTime: '13:15',
stopTime: 10,
pkgs: 100,
coordinate: '117.03587900,36.67266400',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '6',
batch: '1',
hospital: '山东省千佛山医院',
address: '经十路山师东路',
dateTime: '13:40',
stopTime: 20,
pkgs: 100,
coordinate: '117.04485100,36.64754900',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '7',
batch: '1',
hospital: '山东第一医科大学第一附属医院',
address: '山东省济南市历下区经十路16766号',
dateTime: '14:05',
stopTime: 20,
pkgs: 100,
coordinate: '117.04244800,36.64765800',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '8',
batch: '1',
hospital: '济南长途汽车总站对接点',
address: '济南市天桥区济洛路131号',
dateTime: '17:25',
stopTime: 15,
pkgs: 0,
coordinate: '116.99360600,36.68543900',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '2',
batch: '1',
hospital: '山东省省立医院东院',
address: '山东省济南市历下区经十路9677号',
dateTime: '09:05',
stopTime: 90,
pkgs: 100,
coordinate: '117.12129000,36.66338600',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '3',
batch: '1',
hospital: '山东省省立医院东院(特检)',
address: '山东省济南市历下区经十路9667号',
dateTime: '10:40',
stopTime: 30,
pkgs: 100,
coordinate: '117.03401900,36.64879400',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '新华卓越门诊部(济南)有限公司',
address: '济南市历下区龙奥北路8-4号玉兰广场2号楼3层',
dateTime: '11:20',
stopTime: 10,
pkgs: 100,
coordinate: '117.12426800,36.65054700',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南市历下区姚家办事处仁合社区卫生服务站',
address: '济南市历下区荆山路438-62号',
dateTime: '11:55',
stopTime: 15,
pkgs: 100,
coordinate: '117.07670700,36.64310600',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南迪安中心办事处',
address: '济南市高新区颖秀路2755号',
dateTime: '12:40',
stopTime: 30,
pkgs: 100,
coordinate: '117.13394400,36.67904500',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南云康达安医学检验实验室有限公司',
address: '济南市高新区颖秀路2766号迪亚产业园东楼二楼',
dateTime: '13:40',
stopTime: 10,
pkgs: 100,
coordinate: '117.13506400,36.67946300',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南爱新卓尔医学检验有限公司',
address: '济南市历下区天辰路1318',
dateTime: '13:55',
stopTime: 10,
pkgs: 100,
coordinate: '117.13495300,36.68222100',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南高新区雅居园社区卫生服务站',
address: '济南高新区雅居园小区北门商 用房1期2区1号楼1单元 2201.202.203室',
dateTime: '14:15',
stopTime: 10,
pkgs: 100,
coordinate: '117.12526800,36.67245200',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '山东省立医院',
address: '济南市经五纬七路324号',
dateTime: '08:25',
stopTime: 210,
pkgs: 100,
coordinate: '116.98415700,36.65685700',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南市槐荫区西市场办事处纬十路社区卫生服务站',
address: '济南市槐荫区经三纬十一路330号',
dateTime: '12:05',
stopTime: 10,
pkgs: 100,
coordinate: '116.97392000,36.65924000',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南市天桥区纬北经纬嘉园社区卫生服务站',
address: '经一路经纬嘉园住宅小区141-31号',
dateTime: '16:30',
stopTime: 20,
pkgs: 100,
coordinate: '120.08842500,30.87737500',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南市槐荫区五里沟公祥街社区卫生服务站',
address: '槐荫区纬五路39-7',
dateTime: '16:55',
stopTime: 15,
pkgs: 100,
coordinate: '116.98715800,36.66398400',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '山东光正眼科医院有限公司',
address: '济南市市中区经二路223号',
dateTime: '17:15',
stopTime: 50,
pkgs: 100,
coordinate: '116.99099400,36.66410100',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '山东光正眼科医院有限公司',
address: '济南市市中区经二路223号',
dateTime: '17:15',
stopTime: 50,
pkgs: 100,
coordinate: '116.99099400,36.66410100',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '山东省康复医院',
address: '历城区唐冶新区围子山路3126号',
dateTime: '10:40',
stopTime: 50,
pkgs: 100,
coordinate: '117.24190100,36.68823600',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '山东水发生命科学研究有限公司',
address: '山东省济南市高新区大正路1777号生命科学城13号楼一层',
dateTime: '11:50',
stopTime: 15,
pkgs: 100,
coordinate: '117.32744800,36.70332300',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '章丘慢性病防治所对接点',
address: '济南市章丘区唐王山路1099号',
dateTime: '12:40',
stopTime: 15,
pkgs: 0,
coordinate: '117.53489000,36.69297100',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南万泉生物技术有限公司',
address: '济南市高新区港兴三路北段一号济南药谷研发平台区1号楼A座1305',
dateTime: '14:05',
stopTime: 15,
pkgs: 100,
coordinate: '117.22268400,36.66921200',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '健颐生物(药谷)',
address: '济南市历城区港兴三路济南药谷1号楼A座25楼',
dateTime: '14:25',
stopTime: 15,
pkgs: 100,
coordinate: '117.22278300,36.66978200',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '山东惠然生物科技有限公司',
address: '高新区港兴三路北段1号济南市药谷研发平台区2号楼1801房间',
dateTime: '14:45',
stopTime: 15,
pkgs: 100,
coordinate: '117.22239900,36.66859400',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '山东富优生命科学有限公司',
address: '山东富优生命科学有限公司',
dateTime: '15:05',
stopTime: 15,
pkgs: 100,
coordinate: '117.22283000,36.67004000',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '山东省齐鲁细胞治疗工程技术有限公司',
address: '山东省济南市高新区港兴三路1109号',
dateTime: '16:05',
stopTime: 10,
pkgs: 100,
coordinate: '117.22257900,36.65528700',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南高新开发区景琪综合门诊有限公司',
address: '高新区舜华路街道街道华奥路77号东鲁凤凰上都6-104',
dateTime: '16:35',
stopTime: 15,
pkgs: 100,
coordinate: '117.15647200,36.65323700',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南市历下区龙洞办事处社区卫生服务中心',
address: '历下区龙洞办事处锦屏家园龙锦生活广场10号楼02号铺',
dateTime: '17:05',
stopTime: 10,
pkgs: 100,
coordinate: '117.12264500,36.62768600',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南佰年颐堂中医医院有限公司',
address: '山东省济南市历城区工业北路180号院内办公楼2号楼1层',
dateTime: '14:55',
stopTime: 10,
pkgs: 100,
coordinate: '117.26118400,36.63685400',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '山东元辰生物医药科技集团有限公司',
address: '华山街道丑父路135号华山片区安置区二区S3号楼商业区四层',
dateTime: '15:20',
stopTime: 10,
pkgs: 100,
coordinate: '117.06162300,36.68773700',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '山东大学第二医院(检验科)',
address: '山东大学第二医院(检验科)',
dateTime: '15:50',
stopTime: 30,
pkgs: 100,
coordinate: '117.04054100,36.69042100',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '山东省立第三医院',
address: '山东省济南市无影山中路12号',
dateTime: '16:40',
stopTime: 60,
pkgs: 100,
coordinate: '116.98967800,36.68406100',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '艾迪康',
address: '济南市天桥区田家庄东路4号',
dateTime: '20:45',
stopTime: 5,
pkgs: 100,
coordinate: '116.97534100,36.69010900',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '历城奇鲁诊所',
address: '七里堡东路84号4号',
dateTime: '10:55',
stopTime: 10,
pkgs: 100,
coordinate: '117.07034900,36.69118200',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '山东省立第三医院(新城社区卫生服务中心)',
address: '济南市天桥区新黄路2567号',
dateTime: '11:25',
stopTime: 5,
pkgs: 100,
coordinate: '117.01213500,36.70852500',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '山东省立第三医院(药山站点)',
address: '山东省济南市天桥区药山西路南端',
dateTime: '11:50',
stopTime: 5,
pkgs: 100,
coordinate: '116.96048900,36.71312700',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '山东省立第三医院(济南市天桥人民医院)',
address: '济南市天桥区天桥街25号',
dateTime: '12:40',
stopTime: 15,
pkgs: 100,
coordinate: '116.96048900,36.71312700',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南市市中区七里山街道泉景天沅社区卫生服务站',
address: '济南市市中区郎茂山路4号101号',
dateTime: '13:15',
stopTime: 15,
pkgs: 100,
coordinate: '116.98310000,36.62614400',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '山东省南山医院有限责任公司',
address: '济南市市中区英雄山路134号',
dateTime: '13:40',
stopTime: 50,
pkgs: 100,
coordinate: '116.98310000,36.62614400',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '山东省南山医院有限责任公司(艾迪康站点)',
address: '济南市市中区英雄山路134号',
dateTime: '12:30',
stopTime: 5,
pkgs: 100,
coordinate: '117.00314900,36.62241000',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南市历下区第二人民医院',
address: '济南市历下区东关大街57号',
dateTime: '14:55',
stopTime: 15,
pkgs: 100,
coordinate: '117.04394500,36.67837900',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南三株酵本草医院有限公司',
address: '济南市历城区山大北路77-6号',
dateTime: '15:20',
stopTime: 10,
pkgs: 100,
coordinate: '117.06090000,36.67966900',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南市历城区妇幼保健计划生育服务中心(两癌)',
address: '济南市历城区洪楼西路45号',
dateTime: '15:35',
stopTime: 15,
pkgs: 100,
coordinate: '117.06136300,36.68004900',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '历城中医院',
address: '济南市历城区洪家楼南路26号',
dateTime: '15:55',
stopTime: 40,
pkgs: 100,
coordinate: '117.06652000,36.68147900',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南远大中医脑康医院有限公司',
address: '济南市历城区二环东路3889号',
dateTime: '16:40',
stopTime: 15,
pkgs: 100,
coordinate: '117.07276600,36.67283300',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南伊美尔整形美容医院有限公司',
address: '济南市解放路30-1号',
dateTime: '17:05',
stopTime: 10,
pkgs: 100,
coordinate: '117.06004900,36.66592800',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南市中心医院(精准中心)',
address: '山东省济南市历城区解放路105号',
dateTime: '17:25',
stopTime: 10,
pkgs: 100,
coordinate: '117.06652000,36.68147900',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南市中心医院(特检)',
address: '济南市历下区解放路105号',
dateTime: '17:40',
stopTime: 20,
pkgs: 100,
coordinate: '117.04767000,36.66776700',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南市济阳区人民医院',
address: '济阳县纬六路9号',
dateTime: '09:10',
stopTime: 80,
pkgs: 100,
coordinate: '116.98330600,36.66371900',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南市济阳区中医医院(病理)',
address: '山东省济南市济阳区纬二路112号',
dateTime: '10:40',
stopTime: 30,
pkgs: 100,
coordinate: '117.19134000,36.97515700',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南市济阳区中医医院',
address: '山东省济南市济阳区纬二路112号',
dateTime: '11:15',
stopTime: 120,
pkgs: 100,
coordinate: '117.19134000,36.97515700',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南市济阳区妇幼保健计划生育服务中心',
address: '山东省济南市济阳区老城街16号',
dateTime: '13:45',
stopTime: 30,
pkgs: 100,
coordinate: '117.21862800,36.97423500',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南市济阳区妇幼保健院计划生育服务中心(站点)',
address: '济阳区济北街道开元大街166号',
dateTime: '14:30',
stopTime: 10,
pkgs: 100,
coordinate: '117.17039900,36.97523800',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济阳妇幼对接点',
address: '济阳区济北街道开元大街166号',
dateTime: '14:40',
stopTime: 5,
pkgs: 100,
coordinate: '117.17039900,36.97523800',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济阳妇儿医院',
address: '济南市济 阳区德阳路与兴河街交叉口',
dateTime: '15:20',
stopTime: 10,
pkgs: 100,
coordinate: '117.12511900,36.93419300',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
}
]
},
{
name: '',
plate: '',
departure: '',
arrival: '',
departureDate: '08:00',
customerData: [
{
rowNo: '1',
batch: '1',
hospital: '德州交通医院',
address: '德城区东风中路389号',
dateTime: '09:15',
stopTime: 20,
pkgs: 2,
coordinate: '116.31887300,37.44295900',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '2',
batch: '1',
hospital: '德州市人民医院',
address: '德州市新湖大街1751号',
dateTime: '09:47',
stopTime: 100,
pkgs: 41,
coordinate: '116.30555600,37.45116400',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '3',
batch: '1',
hospital: '德州市人民医院(特检)',
address: '德州市新湖大街1751号',
dateTime: '11:32',
stopTime: 15,
pkgs: 1,
coordinate: '116.30555600,37.45116400',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '德州市立医院对接点',
address: '德州市德城区三八中路1766号',
dateTime: '11:55',
stopTime: 20,
pkgs: 100,
coordinate: '116.29370300,37.45320200',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '5',
batch: '1',
hospital: '德州市立医院',
address: '山东省德州市德城区三八路1766号',
dateTime: '12:55',
stopTime: 90,
pkgs: 2,
coordinate: '116.29370300,37.45320200',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '6',
batch: '1',
hospital: '德棉医院',
address: '德州市运河开发区纺织大街522号',
dateTime: '14:37',
stopTime: 20,
pkgs: 100,
coordinate: '116.27572300,37.45761700',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '7',
batch: '1',
hospital: '德州汽车站对接点',
address: '德州市德城区东风路1667号',
dateTime: '15:12',
stopTime: 15,
pkgs: 100,
coordinate: '116.29082500,37.44405800',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '8',
batch: '1',
hospital: '武城县妇幼保健计划生育服务中心(两癌)',
address: '山东省德州市武城县振华西街1536号',
dateTime: '09:50',
stopTime: 10,
pkgs: 100,
coordinate: '116.06056800,37.21353300',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '9',
batch: '1',
hospital: '武城县老城镇仓上村卫生室',
address: '武城县老城镇仓上村',
dateTime: '10:30',
stopTime: 10,
pkgs: 100,
coordinate: '115.94163900,37.11129600',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '10',
batch: '1',
hospital: '武城县老城镇新运社区卫生室',
address: '武城县老城镇',
dateTime: '10:45',
stopTime: 10,
pkgs: 100,
coordinate: '115.89356900,37.14593200',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '11',
batch: '1',
hospital: '夏津县中医院',
address: '夏津县经开区北外环路',
dateTime: '11:30',
stopTime: 15,
pkgs: 100,
coordinate: '116.39217300,37.49376100',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '12',
batch: '1',
hospital: '夏津三鹤血液透析有限公司',
address: '山东省德州市夏津县银城街道西关街142号',
dateTime: '12:25',
stopTime: 15,
pkgs: 100,
coordinate: '116.01219400,36.95977800',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '13',
batch: '1',
hospital: '夏津慎安血液透析中心有限公司',
address: '山东省德州市夏津县银城街道西关南街132号',
dateTime: '12:45',
stopTime: 10,
pkgs: 100,
coordinate: '115.99462000,36.95193800',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '14',
batch: '1',
hospital: '临清市老赵庄镇卫生院',
address: '老赵庄镇老赵庄村199号',
dateTime: '13:25',
stopTime: 10,
pkgs: 100,
coordinate: '115.86014600,36.83849000',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '15',
batch: '1',
hospital: '李娅诊所',
address: '临清市黑庄民族小区',
dateTime: '13:55',
stopTime: 15,
pkgs: 100,
coordinate: '115.73074700,36.84652300',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '16',
batch: '1',
hospital: '临西县第二人民医院',
address: '河北省邢台市临西县河西镇顺河街7号',
dateTime: '14:25',
stopTime: 10,
pkgs: 100,
coordinate: '115.68843100,36.85466500',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '17',
batch: '1',
hospital: '聊城市第二人民医院(特检)',
address: '聊城市临清市先锋街道办事处健康街306号',
dateTime: '14:45',
stopTime: 10,
pkgs: 100,
coordinate: '115.70215500,36.85302700',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '18',
batch: '1',
hospital: '百康诊所',
address: '临清市观澜国际B3西4户',
dateTime: '15:09',
stopTime: 10,
pkgs: 100,
coordinate: '115.71547000,36.81913800',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '19',
batch: '1',
hospital: '聊城市第二人民医院(新院)',
address: '临清市315省道和新华路交汇处',
dateTime: '15:32',
stopTime: 10,
pkgs: 100,
coordinate: '115.59475300,36.75968600',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '20',
batch: '1',
hospital: '夏津联络处对接点',
address: '德州市夏津县泉林小区',
dateTime: '15:52',
stopTime: 15,
pkgs: 100,
coordinate: '115.99405300,36.97021100',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
}
]
},
{
name: '',
plate: '',
departure: '',
arrival: '',
departureDate: '08:00',
customerData: [
{
rowNo: '1',
batch: '1',
hospital: '聊城市东昌府区侯营镇卫生院',
address: '山东省聊城市东昌府区侯营镇侯营村',
dateTime: '08:35',
stopTime: 10,
pkgs: 100,
coordinate: '115.88725200,36.39946400',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '2',
batch: '1',
hospital: '聊城市东昌府区和光诊所',
address: '山东省聊城市东昌府区柳园街道陈口路金柱大学城A区30幢s30-113号商铺',
dateTime: '09:12',
stopTime: 10,
pkgs: 100,
coordinate: '116.01666300,36.44393800',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '3',
batch: '1',
hospital: '聊城市东昌府区韩集镇卫生院',
address: '山东省聊城市东昌府区韩集镇政府',
dateTime: '09:55',
stopTime: 10,
pkgs: 100,
coordinate: '116.18228000,36.40897800',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '茌平万里行中医诊所',
address: '聊城市茌平县建设路1416号',
dateTime: '10:40',
stopTime: 10,
pkgs: 100,
coordinate: '116.21077700,36.56289800',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '5',
batch: '1',
hospital: '聊城市茌平区人民医院',
address: '聊城市茌平县文化路99号',
dateTime: '11:00',
stopTime: 15,
pkgs: 100,
coordinate: '116.24962100,36.57960700',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '6',
batch: '1',
hospital: '聊城市茌平区中医医院',
address: '聊城市茌平区新政西路1163号',
dateTime: '11:22',
stopTime: 30,
pkgs: 100,
coordinate: '116.24271400,36.58568300',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '7',
batch: '1',
hospital: '茌平县和睦家妇科诊所',
address: '茌平县三产院内',
dateTime: '12:22',
stopTime: 5,
pkgs: 100,
coordinate: '116.23697900,36.58427100',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '8',
batch: '1',
hospital: '聊城市茌平区温陈街道社区卫生服务中心',
address: '聊城市茌平区温陈街道',
dateTime: '12:47',
stopTime: 5,
pkgs: 100,
coordinate: '116.24984700,36.59027400',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '9',
batch: '1',
hospital: '聊城市茌平区胡屯镇卫生院',
address: '聊城市茌平区新政西路1163号',
dateTime: '13:12',
stopTime: 10,
pkgs: 100,
coordinate: '116.24271400,36.58568300',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '10',
batch: '1',
hospital: '高唐县中医院',
address: '高唐县东兴路16号',
dateTime: '13:52',
stopTime: 10,
pkgs: 100,
coordinate: '116.25357800,36.85772200',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '11',
batch: '1',
hospital: '高唐县人民医院',
address: '山东省高唐县金城西路99号',
dateTime: '14:17',
stopTime: 15,
pkgs: 100,
coordinate: '116.22798600,36.86687600',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '12',
batch: '1',
hospital: '聊城市茌平区第二人民医院',
address: '茌平县博平镇政府街',
dateTime: '15:04',
stopTime: 15,
pkgs: 100,
coordinate: '116.11760000,36.58789400',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '13',
batch: '1',
hospital: '聊城市茌平区洪官屯镇卫生院',
address: '聊城市茌平区洪官屯镇政府驻地',
dateTime: '15:47',
stopTime: 15,
pkgs: 100,
coordinate: '116.06041900,36.39670700',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '14',
batch: '1',
hospital: '聊城汽车总站对接点',
address: '聊城市东昌府区建设路与柳园北路交汇处西北角',
dateTime: '16:22',
stopTime: 8,
pkgs: 100,
coordinate: '115.98847500,36.47286500',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '15',
batch: '1',
hospital: '聊城市东昌府区妇幼保健院(两癌)',
address: '山东省聊城市东昌府区振兴西路129号',
dateTime: '16:40',
stopTime: 50,
pkgs: 100,
coordinate: '115.95710000,36.46834600',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '16',
batch: '1',
hospital: '聊城联络处(回)',
address: '山东省聊城市东昌府区',
dateTime: '17:43',
stopTime: 30,
pkgs: 100,
coordinate: '115.98849100,36.43464500',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '17',
batch: '1',
hospital: '聊城联络处对接点',
address: '山东省聊城市东昌府区',
dateTime: '18:18',
stopTime: 20,
pkgs: 100,
coordinate: '115.98849100,36.43464500',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
}
]
}
],
insertData: [],
cityOptions: [
{ label: '济南', value: '济南' },
{ label: '德州', value: '德州' },
{ label: '聊城', value: '聊城' }
],
option: {
column: [
{
label: '序号',
tableDataprop: 'rowNo',
width: '50px'
},
{
label: '途经',
tableDataprop: 'hospital',
width: '230px'
},
{
label: '取样数',
tableDataprop: 'pkgs',
width: '50px',
align: 'right'
},
{
label: '里程(km)',
tableDataprop: 'distance',
width: '80px',
align: 'right'
},
{
label: '路程耗时(分钟)',
tableDataprop: 'duration',
width: '90px',
align: 'right'
},
{
label: '停留时长(分钟)',
tableDataprop: 'stopTime',
width: '90px',
align: 'right'
},
{
label: '预计到达时间',
tableDataprop: 'reachDate',
width: '90px',
align: 'right'
},
{
label: '预计离开时间',
tableDataprop: 'leaveDate',
width: '90px',
align: 'right'
},
{
label: '状态',
tableDataprop: 'status',
width: '50px'
}
]
},
option1: {
column: [
{
label: '序号',
tableDataprop: 'rowNo',
width: '50px'
},
{
label: '途经',
tableDataprop: 'hospital',
width: '230px'
},
// {
// label: '取样时间',
// tableDataprop: 'dateTime',
// width: '50px'
// },
{
label: '取样数',
tableDataprop: 'pkgs',
width: '50px',
align: 'right'
},
{
label: '状态',
tableDataprop: 'status',
width: '50px'
}
]
},
option2: {
column: [
{
label: '序号',
tableDataprop: 'rowNo',
width: '50px'
},
{
label: '途经',
tableDataprop: 'hospital',
width: '230px'
},
{
label: '取样数',
tableDataprop: 'pkgs',
width: '50px',
align: 'right'
},
{
label: '状态',
tableDataprop: 'status',
width: '50px'
}
]
},
option3: {
column: [
{
label: '序号',
tableDataprop: 'rowNo',
width: '50px'
},
{
label: '目标点',
tableDataprop: 'hospital',
width: '200px'
},
{
label: '取样数',
tableDataprop: 'pkgs',
width: '50px',
align: 'right'
},
{
label: '取样时间段',
tableDataprop: 'timeInterval',
width: '80px'
},
{
label: '使用工具',
tableDataprop: 'vehicleType',
width: '50px'
}
]
}
}
},
computed: {
// ...mapGetters(['order'])
},
watch: {
show: {
handler: function () {
if (!this.show) {
this.checkeData = []
}
},
deep: true,
immediate: true
},
city: {
handler: function (val) {
switch (val) {
case '济南':
this.insertData = this.findDifferentElements(this.orginInsertData[0]?.customerData, this.targetData)
console.log('123333333333', this.insertData)
break
case '德州':
this.insertData = this.findDifferentElements(this.orginInsertData[1]?.customerData, this.targetData)
break
case '聊城':
this.insertData = this.findDifferentElements(this.orginInsertData[2]?.customerData, this.targetData)
break
}
},
deep: true,
immediate: true
}
},
mounted() {
this.$nextTick(() => {
this.city = this.$store.state.app.city
this.targetData = this.$store.getters.getTarget
this.departureData = this.$store.getters.getdepart
// this.curentData = this.$store.getters.getCurentData
this.curentData = JSON.parse(this.$route.query.data)
console.log('curentData', this.curentData)
this.$bus.$on('sortTableData', e => (this.dataList = e))
this.$bus.$on('selecte', e => (this.checkeData = e))
this.$bus.$on('rowData', e => (this.rowData = e))
this.cityIndex = this.cityOptions.findIndex(item => item.label == this.city)
this.index = this.curentData.rowNo - 1
console.log('cityIndex', this.cityIndex)
this.dataList = this.curentData.data
this.dataList.forEach(item => {
item.timeInterval = ''
})
let arr = [...this.filterTable, ...this.dataList]
arr.forEach((item, index) => {
item.rowNo = index + 1
})
})
},
destroyed() {
// this.$bus.$off('selecte')
this.$bus.$off('sortTableData')
},
created() {
this.getSessionId()
this.getDate()
this.$forceUpdate()
},
methods: {
getDate() {
this.date = new Date()
},
adjustTime() {
console.log(this.rowData)
if (!Object.keys(this.rowData).length) {
Toast('请至少选择一条数据')
return
}
this.TimeShow = true
},
async handleChangeTime(action, done) {
if (action === 'confirm') {
// 点击确定走这里
this.rowData.timeInterval = `${this.date1},${this.date2}`
this.orginInsertData[this.cityIndex].customerData.forEach(item => {
if (item.coordinate == this.rowData.coordinate) {
item.timeInterval = this.rowData.timeInterval
}
})
console.log('12131', this.dataList)
done(true)
this.replanning()
} else {
// 点击取消走这里
done(true) // 关闭弹窗, true可以省略
}
},
findDifferentElements(arr1, arr2) {
const diff1 = arr1.filter(obj1 => !arr2.some(obj2 => this.isEqual(obj1, obj2)))
const diff2 = arr2.filter(obj2 => !arr1.some(obj1 => this.isEqual(obj2, obj1)))
return [...diff1, ...diff2]
},
isEqual(obj1, obj2) {
return obj1.hospital === obj2.hospital && obj1.dateTime === obj2.dateTime
},
isnavigation(val) {
let that = this
let myLocation = JSON.parse(sessionStorage.getItem('ownChooseLocation'))
if (this.cabinData.longitude && this.cabinData.latitude) {
let Url = ''
switch (val) {
case 'amap':
Url = `https://uri.amap.com/navigation?from=${myLocation.lng},${myLocation.lat},${myLocation.formattedAddress}&to=${that.cabinData.longitude},${that.cabinData.latitude},${that.cabinData.name}&callnative=1`
break
case 'bmap':
Url = `http://api.map.baidu.com/direction?origin=latlng:${myLocation.lat},${myLocation.lng}|name:${myLocation.formattedAddress}&destination=latlng:${that.cabinData.latitude},${that.cabinData.longitude}|name:${that.cabinData.name}&mode=driving&origin_region=${myLocation.city}&destination_region=${that.cabinData.cityName}&output=html&src=webapp.baidu.openAPIdemo`
break
}
location.href = Url
} else {
// this.$message({
// message: '请先确认您的起点和终点位置',
// type: 'warning',
// })
}
},
// 请求数据案例
initData(list) {
Toast.loading({
duration: 0
})
// let destinations = arr.map(item => item.coordinate).join(';')
// 请求接口数据,仅作为展示,需要配置src->config下环境文件
console.log('123', list)
// return
let arr = _.cloneDeep(list)
const data = {
region: this.city,
plate: '',
departure: '',
arrival: '',
departureDate: '06:30',
customerData: arr
}
const params = {
method: 'GetRouteMatrix_test',
format: 'json',
sessionId: this.accessToken,
sign: '203EF639BA15A6E001B59DB78AB81470B7893CAF',
appKey: 'dd48c515fcde43bea0b5bd0b8f77e119',
v: '1.0'
}
getPlan(data, params)
.then(res => {
Toast.clear()
let newArr = JSON.parse(res).returnModel
console.log('返回的数据', newArr)
newArr.forEach(item => {
item.data.forEach((e, index) => {
e.distance = e.distance.toFixed(2)
e.hospital = e.returnName
e.status = '未去'
e.coordinate = e.destination
e.isOrigin = 'N'
if (index == item.data.length - 1) {
e.pkgs = 0
} else {
e.pkgs = 100
}
// e.distance.toFixed(2)
})
item.data.pop()
})
this.dataList = newArr[0]?.data
console.log('aaaaa', this.dataList)
let arrs = [...this.filterTable, ...this.dataList]
arrs.forEach((item, index) => {
item.rowNo = index + 1
// this.filterTable[index].rowNo = index
// this.dataList[index].rowNo = index
})
})
.catch(() => {})
},
initData2(list) {
Toast.loading({
duration: 0
})
// let destinations = arr.map(item => item.coordinate).join(';')
// 请求接口数据,仅作为展示,需要配置src->config下环境文件
console.log('123', list)
// return
let arr = _.cloneDeep(list)
arr.forEach((item, index) => {
// if (item.dateTime1) {
// item.dateTime = item.dateTime1
// }
item.rowNo = index + 1
return item
})
const data = {
region: this.city,
plate: '',
departure: '',
arrival: '',
departureDate: this.departureData[this.index].dateTime,
customerData: arr
}
const params = {
method: 'GetRoutePlan_test1',
format: 'json',
sessionId: this.accessToken,
sign: '203EF639BA15A6E001B59DB78AB81470B7893CAF',
appKey: 'dd48c515fcde43bea0b5bd0b8f77e119',
v: '1.0'
}
getPlan2(data, params)
.then(res => {
Toast.clear()
let newArr = JSON.parse(res).data
console.log('返回的数据', newArr)
// if (!this.filterTable.length) {
// newArr.shift()
// }
newArr.shift()
console.log(arr)
let sortedArray = newArr.map(item1 =>
arr.find(item2 => {
if (item2.hospital + item2.dateTime == item1.returnName) {
item2.distance = item1.distance.toFixed(2)
item2.duration = item1.duration
item2.stopTime = item1.stopTime
item2.reachDate = item1.reachDate
item2.leaveDate = item1.leaveDate
item2.status = '未去'
// item2.dateTime1 = _.cloneDeep(item2.dateTime)
// item2.dateTime = item1.timeSlot.replace('-', '<br/>')
return item2
}
})
)
this.dataList = sortedArray
console.log('aaaaa', this.dataList)
let arrs = [...this.filterTable, ...this.dataList]
arrs.forEach((item, index) => {
item.rowNo = index + 1
// this.filterTable[index].rowNo = index
// this.dataList[index].rowNo = index
})
})
.catch(() => {})
},
getSessionId() {
let params = {
client_id: 'dd48c515fcde43bea0b5bd0b8f77e119',
grant_type: 'client_credentials',
client_secret: 'c6602114c9ba488b877d0d84b0e5e700',
scope: 'read'
}
getSession(params, {}).then(res => {
this.accessToken = res.access_token
// this.initData(this.curentData.customerData)
// TODO 调试暂时注释
// this.initData([...this.departureData, ...this.targetData])
})
},
getRadom(arr) {
if (arr.length === 0) {
return
}
return Math.round(Math.random() * (arr.length - 1))
},
// 模拟取样
simulatedSampling() {
// this.getRadom(this.curentData.customerData)
// console.log(this.getRadom(this.dataList))
// this.dataList.forEach(item => (item.status = '未去'))
let newArr = [...this.filterTable, ...this.dataList]
this.filterTable = []
for (let i = 0; i <= newArr.length - 1; i++) {
this.$set(newArr[i], `status`, '未去')
}
var num = this.getRadom(newArr) || 1
console.log(num)
// this.curentData.customerData[this.getRadom(this.curentData.customerData)].status = '已去'
for (let i = 0; i < num; i++) {
this.$set(newArr[i], `status`, '已去')
}
this.filterTable = newArr.filter(item => item.status == '已去')
this.dataList = newArr.filter(item => item.status == '未去')
let arr = [...this.filterTable, ...this.dataList]
arr.forEach((item, index) => {
item.rowNo = index + 1
// this.filterTable[index].rowNo = index
// this.dataList[index].rowNo = index
})
console.log(this.filterTable)
console.log(this.dataList)
},
// 重新规划
replanning() {
let data = []
let departobj = {}
if (this.filterTable.length) {
data = [...this.dataList].map(item1 =>
this.orginInsertData[this.cityIndex].customerData.find(item2 => {
if (item2.coordinate == item1.destination && item2.hospital == item1.hospital) {
return item2
} else if (item2.coordinate == item1.coordinate && item2.hospital == item1.hospital) {
return item2
}
})
)
departobj = _.cloneDeep(this.departureData[this.index])
departobj.hospital = this.filterTable[this.filterTable.length - 1].hospital
departobj.address = this.filterTable[this.filterTable.length - 1].returnName
departobj.dateTime = this.filterTable[this.filterTable.length - 1].leaveDate
departobj.coordinate = this.filterTable[this.filterTable.length - 1].coordinate
} else {
data = [...this.dataList].map(item1 =>
this.orginInsertData[this.cityIndex].customerData.find(item2 => {
if (item2.coordinate == item1.destination && `${item2.hospital}${item2.dateTime}` == item1.returnName) {
return item2
} else if (item2.coordinate == item1.coordinate && item2.hospital == item1.hospital) {
return item2
}
})
)
console.log('数据', this.dataList)
departobj = _.cloneDeep(this.departureData[this.index])
}
this.initData([departobj, ...data])
},
// 调整后规划
replanning2() {
let data = []
let departobj = {}
if (this.filterTable.length) {
data = [...this.dataList].map(item1 =>
this.orginInsertData[this.cityIndex].customerData.find(item2 => {
if (item2.coordinate == item1.destination && `${item2.hospital}${item2.dateTime}` == item1.returnName) {
return item2
} else if (item2.coordinate == item1.coordinate && item2.hospital == item1.hospital) {
return item2
}
})
)
departobj = _.cloneDeep(this.departureData[this.index])
departobj.hospital = this.filterTable[this.filterTable.length - 1].hospital
departobj.address = this.filterTable[this.filterTable.length - 1].returnName
departobj.dateTime = this.filterTable[this.filterTable.length - 1].leaveDate
departobj.coordinate = this.filterTable[this.filterTable.length - 1].destination
} else {
data = [...this.dataList].map(item1 =>
this.orginInsertData[this.cityIndex].customerData.find(item2 => {
if (item2.coordinate == item1.destination && `${item2.hospital}${item2.dateTime}` == item1.returnName) {
return item2
} else if (item2.coordinate == item1.coordinate && item2.hospital == item1.hospital) {
return item2
}
})
)
departobj = _.cloneDeep(this.departureData[this.index])
}
this.initData2([departobj, ...data])
},
// 调整顺序
sequence() {},
insertOrder() {
this.show = true
this.insertType = 0
},
insertOrder1() {
this.show = true
this.insertType = 1
},
openDialog() {
this.checkeData = []
},
async handleInsertOrder(action, done) {
if (action === 'confirm') {
// 点击确定走这里
console.log(this.checkeData)
if (!this.checkeData.length) {
Toast('请至少选择一条数据')
return done(false)
}
this.checkeData.forEach(item => {
item.type = 'new'
item.status = '未去'
if (!this.insertType) {
this.dataList.splice(this.getRadom(this.dataList), 0, item)
} else {
let num = this.getRadom(this.dataList)
this.deleteData = [this.dataList[num]]
this.dataList.splice(num, 1)
this.dataList.splice(this.getRadom(this.dataList), 0, item)
}
})
this.dataList.forEach((item, index) => {
item.rowNo = index + 1
})
done(true)
} else {
// 点击取消走这里
done(true) // 关闭弹窗, true可以省略
}
},
// 模拟插单1
insertSheet1() {
this.judgePerson(1)
let arr = [...this.filterTable, ...this.dataList]
arr.forEach((item, index) => {
item.rowNo = index + 1
})
},
// 模拟插单2
insertSheet2() {
let num = this.getRadom(this.dataList)
this.deleteData = [this.dataList[num]]
this.dataList.splice(num, 1)
this.judgePerson(2)
let arr = [...this.filterTable, ...this.dataList]
arr.forEach((item, index) => {
item.rowNo = index + 1
// this.filterTable[index].rowNo = index
// this.dataList[index].rowNo = index
})
},
judgePerson(type) {
// this.dataList.splice(this.getRadom(this.dataList), 0,)
// array.splice(array.length,0,6,8,9);//第二个参数为0的时候,是可以添加参数的,1的时候是删除
if (this.curentData.name == '田耀中') {
if (type == 1) {
this.dataList.splice(this.getRadom(this.dataList), 0, {
rowNo: [...this.dataList, ...this.filterTable].length + 1,
hospital: '聊城市东昌府区妇幼保健院(两癌)',
address: '山东省聊城市东昌府区振兴西路129号',
dateTime: '16:40',
stopTime: 50,
adcode: '340100',
batch: '1',
pkgs: 100,
type: 'new',
coordinate: '115.95710000,36.46834600',
status: '未去'
})
} else {
this.dataList.splice(this.getRadom(this.dataList), 0, {
rowNo: [...this.dataList, ...this.filterTable].length + 1,
hospital: '聊城市茌平区洪官屯镇卫生院',
address: '聊城市茌平区洪官屯镇政府驻地',
dateTime: '15:47',
stopTime: 15,
adcode: '340100',
batch: '1',
pkgs: 100,
type: 'new',
coordinate: '116.06041900,36.39670700',
status: '未去'
})
}
} else if (this.curentData.name == '路飞') {
if (type == 1) {
this.dataList.splice(this.getRadom(this.dataList), 0, {
rowNo: [...this.dataList, ...this.filterTable].length + 1,
hospital: '德州市立医院',
address: '山东省德州市德城区三八路1766号',
dateTime: '12:55',
adcode: '340100',
stopTime: 90,
pkgs: 2,
batch: '1',
type: 'new',
coordinate: '116.29370300,37.45320200',
status: '未去'
})
} else {
this.dataList.splice(this.getRadom(this.dataList), 0, {
rowNo: [...this.dataList, ...this.filterTable].length + 1,
hospital: '德棉医院',
address: '德州市运河开发区纺织大街522号',
dateTime: '14:37',
stopTime: 20,
adcode: '340100',
batch: '1',
pkgs: 0,
type: 'new',
coordinate: '116.27572300,37.45761700',
status: '未去'
})
}
} else if (this.curentData.name == '王东') {
if (type == 1) {
this.dataList.splice(this.getRadom(this.dataList), 0, {
rowNo: [...this.dataList, ...this.filterTable].length + 1,
hospital: '武警山东总队医院',
address: '山东省济南市历下区浆水泉路12--8号',
dateTime: '14:45',
adcode: '340100',
batch: '1',
stopTime: 15,
pkgs: 100,
type: 'new',
coordinate: '117.08718600,36.65631700',
status: '未去'
})
} else {
this.dataList.splice(this.getRadom(this.dataList), 0, {
rowNo: [...this.dataList, ...this.filterTable].length + 1,
hospital: '济南汇安健康管理有限公司历下门诊部',
address: '济南市历下区文化西路15号',
dateTime: '12:05',
batch: '1',
stopTime: 120,
adcode: '340100',
pkgs: 100,
type: 'new',
coordinate: '117.03081400,36.65417800',
status: '未去'
})
}
} else if (this.curentData.name == '尹逊武') {
if (type == 1) {
this.dataList.splice(this.getRadom(this.dataList), 0, {
rowNo: [...this.dataList, ...this.filterTable].length + 1,
batch: '1',
hospital: '山东省中医院(西院)',
address: '山东省济南市文化西路42号',
dateTime: '09:00,12:00',
stopTime: 30,
pkgs: 100,
coordinate: '117.02325300,36.65510600',
type: 'new',
status: '未去'
})
} else {
this.dataList.splice(this.getRadom(this.dataList), 0, {
rowNo: [...this.dataList, ...this.filterTable].length + 1,
batch: '1',
hospital: '山东省千佛山医院',
address: '经十路山师东路',
dateTime: '13:40',
stopTime: 20,
pkgs: 100,
coordinate: '117.04485100,36.64754900',
type: 'new',
status: '未去'
})
}
} else {
if (this.curentData.batch == '第一批') {
this.dataList.splice(this.getRadom(this.dataList), 0, {
rowNo: [...this.dataList, ...this.filterTable].length + 1,
batch: '1',
hospital: '济南样本室对接点',
address: '济南市历下区颖秀路2755号',
dateTime: '19:45',
stopTime: 10,
pkgs: '-',
coordinate: '117.13394400,36.67904500',
type: 'new',
status: '未去'
})
} else {
this.dataList.splice(this.getRadom(this.dataList), 0, {
rowNo: [...this.dataList, ...this.filterTable].length + 1,
batch: '2',
hospital: '济南长途汽车总站对接点',
address: '济南市天桥区济洛路131号',
dateTime: '21:45',
stopTime: 15,
pkgs: '-',
coordinate: '116.99360600,36.68543900',
type: 'new',
status: '未去'
})
}
}
},
nextOrder() {
if (this.index == this.allReturnData.length - 1) {
Toast.fail('已经是最后一条')
return
}
this.index++
this.filterTable = []
this.deleteData = []
this.dataList = this.allReturnData[this.index]?.data
this.replaceRowNo()
},
lastOrder() {
if (this.index == 0) {
Toast.fail('已经是第一条')
return
}
this.index--
this.filterTable = []
this.deleteData = []
this.dataList = this.allReturnData[this.index]?.data
this.replaceRowNo()
},
replaceRowNo() {
this.dataList.forEach((item, index) => {
item.rowNo = index + 1
})
},
// 开启导航
EnableNavigation() {
console.log(this.dataList)
// this.dataList.map(item => item.coordinate).join(';')
this.dataList.map(item => item.coordinate)
let arr = []
if (!this.filterTable.length) {
arr = [this.departureData[this.index], ...this.dataList.filter(item => item.status == '未去')]
} else {
arr = [this.filterTable[this.filterTable.length - 1], ...this.dataList.filter(item => item.status != '已去')]
}
let obj = {
// 起点
startingPoint: arr[0].coordinate,
startingName: arr[0].hospital,
// 终点
terminus: this.curentData.coordinate,
terminusName: this.curentData.arrival
// 途经点
// 116.402796,39.936915
// pointOfPassage: `${this.dataList.map(item => item.coordinate).join('|')},midwaypoint`
}
// console.log(obj)
let url = ''
arr.forEach((item, index) => {
if (index > 0 && index < arr.length) {
url +=
`&via[${index - 1}][adcode]=${item.adcode}` +
`&via[${index - 1}][id]` +
`&via[${index - 1}][lnglat]=${item.coordinate}` +
`&via[${index - 1}][modxy]=${item.coordinate}` +
`&via[${index - 1}][name]=${item.hospital}` +
`&via[${index - 1}][poitype]`
}
})
let aurl = arr.forEach((item, index) => {
if (index > 0 && index < arr.length - 1) {
url += `&via[${index - 1}]=${item.coordinate},${item.hospital}`
}
})
console.log('123', url)
this.mapUrl = `https://ditu.amap.com/dir?dateTime=now&from[adcode]=&from[id]=&from[poitype]=&to[adcode]=&to[id]=&to[poitype]=&type=car&policy=2&from[lnglat]=${obj.startingPoint}&from[modxy]=${obj.startingPoint}&from[name]=${obj.startingName}&to[lnglat]=${obj.terminus}&to[modxy]=${obj.terminus}&to[name]=${obj.terminusName}${url}`
console.log(this.mapUrl)
window.open(this.mapUrl)
// location.assign(this.mapUrl)
let a = `https://uri.amap.com/navigation?from=${this.dataList[0].coordinate},${this.dataList[0].hospital}
&to=${this.curentData.coordinate},${this.curentData.departure}
&via=${aurl}
&mode=car
&callnative=1
&src=mypage
&policy=1
&coordinate=gaode
&callnative`
console.log(a)
// window.open(a)
// location.href = `https://uri.amap.com/navigation?
// from=${this.dataList[0].coordinate}
// &to=${this.dataList[0].coordinate}
// &via=${this.dataList.map(item => item.coordinate).join(';')}
// &mode=car&policy=1&coordinate=gaode&callnative=1`
}
}
}
</script>
<style lang="scss" scoped>
.title {
padding: 10px;
}
.header-text {
font-size: 24px;
font-weight: 800;
}
.table-box {
margin: 12px 0px;
.th-row {
height: 56px;
line-height: 56px;
background: #ebf1f7;
padding: 0px 12px;
font-size: 36px;
}
.tb-row {
font-size: 48px;
height: 56px;
line-height: 56px;
padding: 0px 12px;
}
}
.fixed-bottom-right {
// position: fixed;
margin-top: 80px;
bottom: 20px;
right: 0px;
width: 100%;
}
</style>
<template>
<div>
<div class="title">
<div>出发列表</div>
<van-row type="flex" style="margin-top: 15px" justify="space-around">
<van-col span="24" class="header-text" style="display: flex">
<!-- <van-datetime-picker v-model="currentData.departureDate" type="time" title="选择时间" /> -->
<van-cell-group>
<!-- <van-field v-model="currentData.departureDate" label="出发时间" placeholder="请输入出发时间" /> -->
城市:
<select name="pets" id="pet-select" v-model="city" class="city" @change="cityChage($event)">
<option v-for="item in cityOptions" :key="item.value" :value="item.value">{{ item.label }}</option>
</select>
</van-cell-group>
<!-- 出发时间:<van-field v-model="currentData.departureDate" size="small" placeholder="请输入时间" /> -->
</van-col>
</van-row>
</div>
<Table-vant :option="option" :tableData="currentData" :showCheck="true">
<template v-slot:dateTime="{ item }">
<input type="text" v-model="item.dateTime" style="width: 80%; height: 25px" />
</template>
<template v-slot:vehicleType="{ item }">
<div>{{ item.vehicleType == 1 ? '电动汽车' : '电动车' }}</div>
</template>
</Table-vant>
<div class="fixed-bottom-right">
<div style="display: flex; flex-direction: row-reverse; margin-top: 10px">
<van-button round plain type="primary" @click="nextStep">下一步</van-button>
</div>
</div>
</div>
</template>
<script>
import TableVant from '@/components/Table.vue'
import { Toast } from 'vant'
import _ from 'lodash'
export default {
components: { TableVant },
data() {
return {
index: 0,
date: '',
cloneData: {},
checkeData: [],
city: '济南',
currentData: [],
cityOptions: [
{ label: '济南', value: '济南' },
{ label: '德州', value: '德州' },
{ label: '聊城', value: '聊城' }
],
option: {
column: [
{
label: '序号',
tableDataprop: 'rowNo',
width: '50px',
align: 'center'
},
{
label: '出发点',
tableDataprop: 'hospital',
width: '230px'
},
{
label: '取件人',
tableDataprop: 'name',
width: '50px'
},
{
label: '出发时间',
tableDataprop: 'dateTime',
width: '80px'
},
{
label: '使用工具',
tableDataprop: 'vehicleType',
width: '80px'
}
]
},
// orginData: [
// {
// name: '王东',
// plate: '鲁A73HU8',
// departure: '济南迪安中心办事处',
// arrival: '济南样本室对接点',
// departureDate: '07:30',
// customerData: [
// {
// rowNo: '1',
// batch: '1',
// hospital: '济南迪安中心办事处',
// address: '济南市高新区颖秀路2755号',
// dateTime: '6:30',
// stopTime: 15,
// pkgs: '-',
// coordinate: '117.13394400,36.67904500'
// },
// {
// rowNo: '3',
// batch: '1',
// hospital: '济南西站对接点',
// address: '济南市槐荫区齐鲁大道6号',
// dateTime: '7:50',
// stopTime: 20,
// pkgs: '-',
// coordinate: '116.89177900,36.66887900'
// },
// {
// rowNo: '5',
// batch: '1',
// hospital: '山东第一医科大学附属皮肤病医院',
// address: '济南市经十路27397号',
// dateTime: '9:30',
// stopTime: 10,
// pkgs: 100,
// coordinate: '116.92826100,36.65210900'
// },
// {
// rowNo: '7',
// batch: '1',
// hospital: '市中慢病第四人民医院青龙山分院',
// address: '山东省济南市市中区南辛庄西路272号',
// dateTime: '10:20',
// stopTime: 40,
// pkgs: 100,
// coordinate: '116.95988200,36.62819100'
// },
// {
// rowNo: '8',
// batch: '1',
// hospital: '山东省医学科学院放射医学研究所',
// address: '济南经十路89号9956',
// dateTime: '11:15',
// stopTime: 15,
// pkgs: 100,
// coordinate: '117.01788200,36.64911300'
// },
// {
// rowNo: '9',
// batch: '1',
// hospital: '山东省分析测试中心',
// address: '山东省济南市历下区科院路19号详情',
// dateTime: '11:40',
// stopTime: 10,
// pkgs: 100,
// coordinate: '117.04783900,36.64556100'
// },
// {
// rowNo: '10',
// batch: '1',
// hospital: '济南样本室对接点',
// address: '济南市历下区颖秀路2755号',
// dateTime: '15:20',
// stopTime: 30,
// pkgs: 100,
// coordinate: '117.13394400,36.67904500'
// }
// ]
// },
// {
// name: '路飞',
// plate: '德州1333887',
// departure: '德州办事处',
// arrival: '德州办事处',
// departureDate: '08:30',
// customerData: [
// {
// rowNo: '1',
// batch: '1',
// hospital: '德州办事处',
// address: '德州市德城区世纪嘉园小区',
// dateTime: '8:40',
// stopTime: 20,
// pkgs: '-',
// coordinate: '116.33733900,37.42873700'
// },
// {
// rowNo: '2',
// batch: '1',
// hospital: '德州交通医院',
// address: '德城区东风中路389号',
// dateTime: '9:15',
// stopTime: 20,
// pkgs: 2,
// coordinate: '116.31887300,37.44295900'
// },
// {
// rowNo: '3',
// batch: '1',
// hospital: '德州市人民医院',
// address: '德州市新湖大街1751号',
// dateTime: '9:47',
// stopTime: 100,
// pkgs: 41,
// coordinate: '116.30555600,37.45116400'
// },
// {
// rowNo: '4',
// batch: '1',
// hospital: '德州市人民医院(特检)',
// address: '德州市新湖大街1751号',
// dateTime: '11:32',
// stopTime: 15,
// pkgs: 1,
// coordinate: '116.30555600,37.45116400'
// },
// {
// rowNo: '5',
// batch: '1',
// hospital: '德州市立医院对接点',
// address: '德州市德城区三八中路1766号',
// dateTime: '11:55',
// stopTime: 20,
// pkgs: '-',
// coordinate: '116.29370300,37.45320200'
// },
// // {
// // rowNo: '6',
// // batch: '1',
// // hospital: '德州市立医院',
// // address: '山东省德州市德城区三八路1766号',
// // dateTime: '12:55',
// // stopTime: 90,
// // pkgs: 2,
// // coordinate: '116.29370300,37.45320200'
// // },
// // {
// // rowNo: '7',
// // batch: '1',
// // hospital: '德棉医院',
// // address: '德州市运河开发区纺织大街522号',
// // dateTime: '14:37',
// // stopTime: 20,
// // pkgs: "-",
// // coordinate: '116.27572300,37.45761700'
// // },
// {
// rowNo: '8',
// batch: '1',
// hospital: '德州汽车站对接点',
// address: '德州市德城区东风路1667号',
// dateTime: '15:12',
// stopTime: 15,
// pkgs: '-',
// coordinate: '116.29082500,37.44405800'
// },
// {
// rowNo: '9',
// batch: '1',
// hospital: '德州办事处',
// address: '德州市德城区世纪嘉园小区',
// dateTime: '15:52',
// stopTime: 20,
// pkgs: '-',
// coordinate: '116.33733900,37.42873700'
// }
// ]
// },
// {
// name: '田耀中',
// plate: '鲁A790Z9',
// departure: '聊城联络处',
// arrival: '聊城联络处对接点',
// departureDate: '09:30',
// customerData: [
// {
// rowNo: '1',
// batch: '1',
// hospital: '聊城联络处',
// address: '山东省聊城市东昌府区',
// dateTime: '8:00',
// stopTime: 10,
// pkgs: '-',
// coordinate: '115.98849100,36.43464500'
// },
// {
// rowNo: '2',
// batch: '1',
// hospital: '聊城市东昌府区侯营镇卫生院',
// address: '山东省聊城市东昌府区侯营镇侯营村',
// dateTime: '8:35',
// stopTime: 10,
// pkgs: 100,
// coordinate: '115.88725200,36.39946400'
// },
// {
// rowNo: '3',
// batch: '1',
// hospital: '聊城市东昌府区和光诊所',
// address: '山东省聊城市东昌府区柳园街道陈口路金柱大学城A区30幢s30-113号商铺',
// dateTime: '9:12',
// stopTime: 10,
// pkgs: 100,
// coordinate: '116.01666300,36.44393800'
// },
// {
// rowNo: '4',
// batch: '1',
// hospital: '聊城市东昌府区韩集镇卫生院',
// address: '山东省聊城市东昌府区韩集镇政府',
// dateTime: '9:55',
// stopTime: 10,
// pkgs: 100,
// coordinate: '116.18228000,36.40897800'
// },
// {
// rowNo: '5',
// batch: '1',
// hospital: '茌平万里行中医诊所',
// address: '聊城市茌平县建设路1416号',
// dateTime: '10:40',
// stopTime: 10,
// pkgs: 100,
// coordinate: '116.21077700,36.56289800'
// },
// {
// rowNo: '6',
// batch: '1',
// hospital: '聊城市茌平区人民医院',
// address: '聊城市茌平县文化路99号',
// dateTime: '11:00',
// stopTime: 15,
// pkgs: 100,
// coordinate: '116.24962100,36.57960700'
// },
// {
// rowNo: '7',
// batch: '1',
// hospital: '聊城市茌平区中医医院',
// address: '聊城市茌平区新政西路1163号',
// dateTime: '11:22',
// stopTime: 30,
// pkgs: 100,
// coordinate: '116.24271400,36.58568300'
// },
// {
// rowNo: '8',
// batch: '1',
// hospital: '茌平县和睦家妇科诊所',
// address: '茌平县三产院内',
// dateTime: '12:22',
// stopTime: 5,
// pkgs: 100,
// coordinate: '116.23697900,36.58427100'
// },
// {
// rowNo: '9',
// batch: '1',
// hospital: '聊城市茌平区温陈街道社区卫生服务中心',
// address: '聊城市茌平区温陈街道',
// dateTime: '12:47',
// stopTime: 5,
// pkgs: 100,
// coordinate: '116.24984700,36.59027400'
// },
// {
// rowNo: '10',
// batch: '1',
// hospital: '聊城市茌平区胡屯镇卫生院',
// address: '聊城市茌平区新政西路1163号',
// dateTime: '13:12',
// stopTime: 10,
// pkgs: 100,
// coordinate: '116.24271400,36.58568300'
// },
// {
// rowNo: '11',
// batch: '1',
// hospital: '高唐县中医院',
// address: '高唐县东兴路16号',
// dateTime: '13:52',
// stopTime: 10,
// pkgs: 100,
// coordinate: '116.25357800,36.85772200'
// },
// {
// rowNo: '12',
// batch: '1',
// hospital: '高唐县人民医院',
// address: '山东省高唐县金城西路99号',
// dateTime: '14:17',
// stopTime: 15,
// pkgs: 100,
// coordinate: '116.22798600,36.86687600'
// },
// {
// rowNo: '13',
// batch: '1',
// hospital: '聊城市茌平区第二人民医院',
// address: '茌平县博平镇政府街',
// dateTime: '15:04',
// stopTime: 15,
// pkgs: 100,
// coordinate: '116.11760000,36.58789400'
// },
// // {
// // rowNo: '14',
// // batch: '1',
// // hospital: '聊城市茌平区洪官屯镇卫生院',
// // address: '聊城市茌平区洪官屯镇政府驻地',
// // dateTime: '15:47',
// // stopTime: 15,
// // pkgs: 100,
// // coordinate: '116.06041900,36.39670700'
// // },
// {
// rowNo: '15',
// batch: '1',
// hospital: '聊城汽车总站对接点',
// address: '聊城市东昌府区建设路与柳园北路交汇处西北角',
// dateTime: '16:22',
// stopTime: 8,
// pkgs: '-',
// coordinate: '115.98847500,36.47286500'
// },
// // {
// // rowNo: '16',
// // batch: '1',
// // hospital: '聊城市东昌府区妇幼保健院(两癌)',
// // address: '山东省聊城市东昌府区振兴西路129号',
// // dateTime: '16:40',
// // stopTime: 50,
// // pkgs: 100,
// // coordinate: '115.95710000,36.46834600'
// // },
// {
// rowNo: '17',
// batch: '1',
// hospital: '聊城联络处',
// address: '山东省聊城市东昌府区',
// dateTime: '17:43',
// stopTime: 30,
// pkgs: '-',
// coordinate: '115.98849100,36.43464500'
// },
// {
// rowNo: '18',
// batch: '1',
// hospital: '聊城联络处对接点',
// address: '山东省聊城市东昌府区',
// dateTime: '18:18',
// stopTime: 20,
// pkgs: '-',
// coordinate: '115.98849100,36.43464500'
// }
// ]
// },
// {
// name: '尹逊武',
// plate: '济南2595139',
// departure: '尹逊武家',
// arrival: '尹逊武家',
// departureDate: '06:30',
// customerData: [
// {
// rowNo: '1',
// batch: '1',
// hospital: '尹逊武家',
// address: '山东省济南市历城区北园大街57号',
// dateTime: '7:30',
// stopTime: 30,
// pkgs: 0,
// coordinate: '117.05366200,36.69689900'
// },
// {
// rowNo: '2',
// batch: '1',
// hospital: '山东大学齐鲁医院',
// address: '济南市文化西路107号',
// dateTime: '8:50',
// stopTime: 190,
// pkgs: 100,
// coordinate: '117.01839000,36.65659000'
// },
// // {
// // rowNo: '3',
// // batch: '1',
// // hospital: '山东省中医院(西院)',
// // address: '山东省济南市文化西路42号',
// // dateTime: '11:25',
// // stopTime: 30,
// // pkgs: 100,
// // coordinate: '117.02325300,36.65510600'
// // },
// {
// rowNo: '4',
// batch: '1',
// hospital: '济南市中医医院1',
// address: '山东省济南市槐荫区美里路555号海那城总部24号楼101单元401',
// dateTime: '12:05',
// stopTime: 30,
// pkgs: 100,
// coordinate: '116.91984000,36.72078200'
// },
// {
// rowNo: '5',
// batch: '1',
// hospital: '济南丽合医疗美容医院有限公司',
// address: '山东省济南市历下区黑虎泉北路61号',
// dateTime: '13:15',
// stopTime: 10,
// pkgs: 100,
// coordinate: '117.03587900,36.67266400'
// },
// // {
// // rowNo: '6',
// // batch: '1',
// // hospital: '山东省千佛山医院',
// // address: '经十路山师东路',
// // dateTime: '13:40',
// // stopTime: 20,
// // pkgs: 100,
// // coordinate: '117.04485100,36.64754900'
// // },
// {
// rowNo: '7',
// batch: '1',
// hospital: '山东第一医科大学第一附属医院',
// address: '山东省济南市历下区经十路16766号',
// dateTime: '14:05',
// stopTime: 20,
// pkgs: 100,
// coordinate: '117.04244800,36.64765800'
// },
// {
// rowNo: '8',
// batch: '1',
// hospital: '山东大学齐鲁医院',
// address: '济南市文化西路107号',
// dateTime: '14:40',
// stopTime: 140,
// pkgs: 100,
// coordinate: '117.01839000,36.65659000'
// },
// {
// rowNo: '9',
// batch: '1',
// hospital: '济南长途汽车总站对接点',
// address: '济南市天桥区济洛路131号',
// dateTime: '17:25',
// stopTime: 15,
// pkgs: 0,
// coordinate: '116.99360600,36.68543900'
// },
// {
// rowNo: '10',
// batch: '1',
// hospital: '尹逊武家',
// address: '山东省济南市历城区北园大街57号',
// dateTime: '18:10',
// stopTime: 5,
// pkgs: 0,
// coordinate: '117.05366200,36.69689900'
// }
// ]
// },
// {
// name: '孙天麟',
// plate: '鲁A2Q3C2',
// departure: '济南迪安中心办事处',
// arrival: '济南样本室对接点',
// departureDate: '09:30',
// customerData: [
// {
// rowNo: '1',
// batch: '1',
// hospital: '济南迪安中心办事处',
// address: '济南市高新区颖秀路2755号',
// dateTime: '14:00',
// stopTime: 30,
// pkgs: '-',
// coordinate: '117.13394400,36.67904500'
// },
// {
// rowNo: '2',
// batch: '1',
// hospital: '济南佰年颐堂中医医院有限公司',
// address: '山东省济南市历城区工业北路180号院内办公楼2号楼1层',
// dateTime: '14:55',
// stopTime: 10,
// pkgs: 100,
// coordinate: '117.26118400,36.63685400'
// },
// // {
// // rowNo: '3',
// // batch: '1',
// // hospital: '山东元辰生物医药科技集团有限公司',
// // address: '华山街道丑父路135号华山片区安置区二区S3号楼商业区四层',
// // dateTime: '15:20',
// // stopTime: 10,
// // pkgs: 100,
// // coordinate: '117.06162300,36.68773700'
// // },
// // {
// // rowNo: '4',
// // batch: '1',
// // hospital: '山东大学第二医院(检验科)',
// // address: '山东大学第二医院(检验科)',
// // dateTime: '15:50',
// // stopTime: 30,
// // pkgs: 100,
// // coordinate: '117.04054100,36.69042100'
// // },
// {
// rowNo: '5',
// batch: '1',
// hospital: '山东省立第三医院',
// address: '山东省济南市无影山中路12号',
// dateTime: '16:40',
// stopTime: 60,
// pkgs: 100,
// coordinate: '116.98967800,36.68406100'
// },
// {
// rowNo: '6',
// batch: '1',
// hospital: '济南长途汽车总站对接点',
// address: '济南市天桥区济洛路131号',
// dateTime: '17:45',
// stopTime: 60,
// pkgs: '-',
// coordinate: '116.99360600,36.68543900'
// },
// // {
// // rowNo: '7',
// // batch: '1',
// // hospital: '济南样本室对接点',
// // address: '济南市历下区颖秀路2755号',
// // dateTime: '19:45',
// // stopTime: 10,
// // pkgs: '-',
// // coordinate: '117.13394400,36.67904500'
// // },
// {
// rowNo: '8',
// batch: '2',
// hospital: '艾迪康',
// address: '济南市天桥区田家庄东路4号',
// dateTime: '20:45',
// stopTime: 5,
// pkgs: 100,
// coordinate: '116.97534100,36.69010900'
// },
// {
// rowNo: '9',
// batch: '2',
// hospital: '济南西站对接点',
// address: '济南市槐荫区齐鲁大道6号',
// dateTime: '21:10',
// stopTime: 15,
// pkgs: '-',
// coordinate: '116.89177900,36.66887900'
// },
// // {
// // rowNo: '10',
// // batch: '2',
// // hospital: '济南长途汽车总站对接点',
// // address: '济南市天桥区济洛路131号',
// // dateTime: '21:45',
// // stopTime: 15,
// // pkgs: '-',
// // coordinate: '116.99360600,36.68543900'
// // },
// {
// rowNo: '11',
// batch: '2',
// hospital: '济南样本室对接点',
// address: '济南市历下区颖秀路2755号',
// dateTime: '22:40',
// stopTime: 10,
// pkgs: '-',
// coordinate: '117.13394400,36.67904500'
// }
// ]
// }
// ]
DepartureList: [
{
name: '',
plate: '',
departure: '',
arrival: '',
departureDate: '06:30',
customerData: [
{
rowNo: '1',
batch: '1',
hospital: '济南迪安中心办事处(王东)',
address: '济南市高新区颖秀路2755号',
dateTime: '06:30',
stopTime: 15,
pkgs: 0,
coordinate: '117.13394400,36.67904500',
isOrigin: 'Y',
vehicleType: '1',
timeInterval: '',
name: '王东',
plate: '鲁A73HU8'
},
{
rowNo: '1',
batch: '1',
hospital: '尹逊武家',
address: '山东省济南市历城区北园大街57号',
dateTime: '07:30',
stopTime: 30,
pkgs: 0,
coordinate: '117.05366200,36.69689900',
isOrigin: 'Y',
vehicleType: '2',
timeInterval: '',
name: '尹逊武',
plate: '济南2595139'
},
{
rowNo: '1',
batch: '1',
hospital: '贾超家',
address: '山东省济南市天桥区堤口路92号',
dateTime: '07:30',
stopTime: 40,
pkgs: 0,
coordinate: '116.96820700,36.67044400',
isOrigin: 'Y',
vehicleType: '2',
timeInterval: '',
name: '贾超',
plate: '济南2387803'
},
{
rowNo: '1',
batch: '1',
hospital: '济南迪安中心办事处(闫东梅)',
address: '济南市高新区颖秀路2755号',
dateTime: '08:20',
stopTime: 30,
pkgs: 0,
coordinate: '117.13394400,36.67904500',
isOrigin: 'Y',
vehicleType: '2',
timeInterval: '',
name: '闫东梅',
plate: '济南2566793'
},
{
rowNo: '1',
batch: '1',
hospital: '王杰杰家',
address: '山东省济南市济阳区纬三路',
dateTime: '08:30',
stopTime: 10,
pkgs: 0,
coordinate: '117.19164300,36.97907100',
isOrigin: 'Y',
vehicleType: '2',
timeInterval: '',
name: '王杰杰',
plate: '济南1830603'
},
{
rowNo: '1',
batch: '1',
hospital: '济南迪安中心办事处(王斌)',
address: '济南市高新区颖秀路2755号',
dateTime: '10:00',
stopTime: 30,
pkgs: 0,
coordinate: '117.13394400,36.67904500',
isOrigin: 'Y',
vehicleType: '1',
timeInterval: '',
name: '王斌',
plate: '鲁A6E5U6'
},
{
rowNo: '1',
batch: '1',
hospital: '济南迪安中心办事处(郝建振)',
address: '济南市高新区颖秀路2755号',
dateTime: '10:00',
stopTime: 20,
pkgs: 0,
coordinate: '117.13394400,36.67904500',
isOrigin: 'Y',
vehicleType: '1',
timeInterval: '',
name: '郝建振',
plate: '鲁A257TR'
},
{
rowNo: '1',
batch: '1',
hospital: '济南迪安中心办事处(孙天麟)',
address: '济南市高新区颖秀路2755号',
dateTime: '14:00',
stopTime: 30,
pkgs: 0,
coordinate: '117.13394400,36.67904500',
isOrigin: 'Y',
vehicleType: '1',
timeInterval: '',
name: '孙天麟',
plate: '鲁A2Q3C2'
}
]
},
{
name: '',
plate: '',
departure: '',
arrival: '',
departureDate: '08:00',
customerData: [
{
rowNo: '1',
batch: '1',
hospital: '德州办事处',
address: '德州市德城区世纪嘉园小区',
dateTime: '08:40',
stopTime: 20,
pkgs: 0,
coordinate: '116.33733900,37.42873700',
isOrigin: 'Y',
vehicleType: '2',
timeInterval: '',
name: '路飞',
plate: '德州1333887'
},
{
rowNo: '1',
batch: '1',
hospital: '夏津联络处',
address: '山东省德州市夏津县',
dateTime: '09:00',
stopTime: 10,
pkgs: 0,
coordinate: '116.00172600,36.94837100',
isOrigin: 'Y',
vehicleType: '1',
timeInterval: '',
name: '宗珂',
plate: '鲁A75A1N'
}
]
},
{
name: '',
plate: '',
departure: '',
arrival: '',
departureDate: '08:00',
customerData: [
{
rowNo: '1',
batch: '1',
hospital: '聊城联络处',
address: '山东省聊城市东昌府区',
dateTime: '08:00',
stopTime: 10,
pkgs: 0,
coordinate: '115.98849100,36.43464500',
isOrigin: 'Y',
vehicleType: '1',
timeInterval: '',
name: '田耀中',
plate: '鲁A790Z9'
}
]
}
]
}
},
methods: {
getDate() {
this.date = new Date()
},
cityChage(e) {
console.log(e.target.value)
},
// 即时规划
instantPlanning() {
console.log(this.cloneData)
this.cloneData.batch = this.currentData.batch
this.cloneData.departureDate = this.currentData.departureDate
let obj = _.cloneDeep(this.orginData[this.index])
if (this.index == 4) {
if (this.currentData.batch == '第一批') {
obj.customerData = this.cloneData.customerData.filter(item => item.batch == 1)
obj.arrival = this.cloneData.customerData.findLast(element => element.batch == '1').hospital
obj.batch = '第一批'
this.$store.dispatch('setOrder', JSON.stringify(obj))
} else {
obj.customerData = this.cloneData.customerData.filter(item => item.batch == 2)
obj.customerData.unshift(this.cloneData.customerData.findLast(element => element.batch == '1'))
obj.departure = this.cloneData.customerData[this.cloneData.customerData.length - 1].hospital
obj.batch = '第二批'
this.$store.dispatch('setOrder', JSON.stringify(obj))
}
} else {
this.$store.dispatch('setOrder', JSON.stringify(this.cloneData))
}
this.$router.push({ path: '/about1' })
},
nextStep() {
console.log(this.checkeData)
if (!this.checkeData.length) {
Toast('请至少选择一条数据')
return
}
this.$store.dispatch('setDepart', JSON.stringify(this.checkeData))
this.$router.push({ path: '/target' })
},
// 下一个
nextOrder() {
console.log(this.orginData)
if (this.index == this.orginData.length - 1) {
Toast.fail('已经是最后一条')
return
}
this.index++
this.cloneData = _.cloneDeep(this.orginData[this.index])
this.currentData = _.cloneDeep(this.orginData[this.index])
if (this.index == 4) {
this.currentData.customerData = this.currentData.customerData.filter(item => item.batch == 1)
}
this.currentData.customerData.shift()
this.currentData.batch = '第一批'
this.currentData.arrival = this.cloneData.customerData.findLast(element => element.batch == '1').hospital
// this.currentData.departureDate = this.cloneData.customerData.findLast(element => element.batch == '1').dateTime
this.currentData.customerData.forEach((item, index) => (item.rowNo = index + 1))
this.$forceUpdate()
},
// 上一个
lastOrder() {
console.log(this.orginData)
if (this.index == 0) {
Toast.fail('已经是第一条')
return
}
this.index--
this.cloneData = _.cloneDeep(this.orginData[this.index])
this.currentData = _.cloneDeep(this.orginData[this.index])
if (this.index == 4) {
this.currentData.customerData = this.currentData.customerData.filter(item => item.batch == 1)
}
this.currentData.customerData.shift()
this.currentData.batch = '第一批'
this.currentData.arrival = this.cloneData.customerData.findLast(element => element.batch == '1').hospital
// this.currentData.departureDate = this.cloneData.customerData.findLast(element => element.batch == '1').dateTime
this.currentData.customerData.forEach((item, index) => (item.rowNo = index + 1))
this.$forceUpdate()
},
// 下一批
nextCargo() {
console.log(this.orginData[this.index].customerData)
if (this.index == 4) {
this.currentData.customerData = this.cloneData.customerData.filter(item => item.batch == 2)
this.currentData.departure = this.cloneData.customerData.findLast(element => element.batch == '1').hospital
this.currentData.departureDate = this.cloneData.customerData.findLast(element => element.batch == '1').dateTime
this.currentData.customerData.forEach((item, index) => (item.rowNo = index + 1))
this.currentData.batch = '第二批'
}
console.log(this.currentData.customerData)
},
// 上一批
lastCargo() {
if (this.index == 4) {
this.currentData.customerData = this.cloneData.customerData.filter(item => item.batch == 1)
this.currentData.arrival = this.cloneData.customerData.findLast(element => element.batch == '1').hospital
this.currentData.departureDate = this.cloneData.customerData[0].dateTime
this.currentData.customerData.forEach((item, index) => (item.rowNo = index + 1))
this.currentData.batch = '第一批'
}
}
},
created() {
this.city = this.$store.state.app.city || '济南'
this.$bus.$on('selecte', e => (this.checkeData = e))
},
mounted() {},
destroyed() {
// this.$bus.$off('selecte')
},
watch: {
city: {
handler: function (val) {
switch (val) {
case '济南':
this.$store.dispatch('setCity', val)
this.currentData = this.DepartureList[0]?.customerData
this.currentData.forEach((item, index) => (item.rowNo = index + 1))
break
case '德州':
this.$store.dispatch('setCity', val)
this.currentData = this.DepartureList[1]?.customerData
this.currentData.forEach((item, index) => (item.rowNo = index + 1))
break
case '聊城':
this.$store.dispatch('setCity', val)
this.currentData = this.DepartureList[2]?.customerData
this.currentData.forEach((item, index) => (item.rowNo = index + 1))
break
}
},
deep: true,
immediate: true
}
}
}
</script>
<style lang="scss" scoped>
.title {
padding: 10px;
}
.header-text {
font-size: 36px;
font-weight: 800;
}
.fixed-bottom-right {
// position: absolute;
margin-top: 80px;
bottom: 20px;
right: 0px;
width: 100%;
}
</style>
<template>
<div class="index-container">
<div class="warpper">
<h1 class="demo-home__title">
<img src="https://cdn.jsdelivr.net/gh/fonghehe/picture/vue-h5-template/logo.png" /><span> VUE H5开发模板</span>
</h1>
<h2 class="demo-home__desc">A vue h5 template with Vant UI</h2>
<div>
<div class="title">
<van-row type="flex" justify="space-around">
<van-col span="8" class="header-text">业务员:{{ currentData.name }}</van-col>
<van-col span="8" class="header-text">车牌号:{{ currentData.plate }}</van-col>
<van-col span="8" class="header-text">批次:{{ currentData.batch }}</van-col>
</van-row>
<van-row type="flex" style="margin-top: 15px" justify="space-around">
<van-col span="8" class="header-text">
出发地: <span>{{ currentData.departure }}</span>
</van-col>
<van-col span="8" class="header-text"> 目的地:{{ currentData.arrival }} </van-col>
<van-col span="8" class="header-text" style="display: flex">
出发时间:<van-field v-model="currentData.departureDate" size="small" placeholder="请输入时间"
/></van-col>
</van-row>
</div>
<Table-vant :option="option" :tableData="currentData.customerData"></Table-vant>
<div class="fixed-bottom-right">
<div style="display: flex; justify-content: space-between; margin-top: 10px">
<van-button round plain type="info" @click="nextOrder()">下一个</van-button>
<van-button round plain type="primary" @click="instantPlanning">即时规划</van-button>
<van-button round plain type="warning" @click="nextCargo()">下一批</van-button>
</div>
<div style="display: flex; justify-content: space-between; margin-top: 10px">
<van-button round plain type="info" @click="lastOrder()">上一个</van-button>
<van-button round plain type="warning" @click="lastCargo()">上一批</van-button>
</div>
</div>
<van-cell icon="success" v-for="item in list" :key="item" :title="item" />
</div>
</template>
<script setup>
import { ref } from 'vue'
let list = ref([
'Vue-cli4',
'配置多环境变量',
'VantUI 组件按需加载',
'Sass 全局样式',
'Webpack 4',
'Vuex 状态管理',
'Axios 封装及接口管理',
'Vue-router',
'Webpack 4 vue.config.js 基础配置',
'配置 proxy 跨域',
'配置 alias 别名',
'配置 打包分析',
'配置 externals 引入 cdn 资源',
'去掉 console.log',
'splitChunks 单独打包第三方模块',
'添加 IE 兼容',
'Eslint+Pettier 统一开发规范'
])
</script>
<style lang="scss" scoped>
.index-container {
.warpper {
padding: 24px;
background: #fff;
.demo-home__title {
display: flex;
align-items: center;
justify-content: center;
margin: 0 0 6px;
font-size: 56px;
.demo-home__title img,
.demo-home__title span {
display: inline-block;
vertical-align: middle;
<script>
import TableVant from '@/components/Table.vue'
import { Toast } from 'vant'
import _ from 'lodash'
export default {
components: { TableVant },
data() {
return {
index: 0,
date: '',
cloneData: {},
currentData: {
name: '',
plate: '',
batch: '第一批',
departure: '',
arrival: '',
departureDate: '',
customerData: []
},
option: {
column: [
{
label: '序号',
tableDataprop: 'rowNo',
width: '50px'
},
{
label: '途经',
tableDataprop: 'hospital',
width: '230px'
},
{
label: '取样数',
tableDataprop: 'pkgs',
width: '50px',
align: 'right'
},
{
label: '状态',
tableDataprop: 'status',
width: '50px'
}
]
},
orginData: [
{
name: '王东',
plate: '鲁A73HU8',
departure: '济南迪安中心办事处',
arrival: '济南样本室对接点',
departureDate: '07:30',
customerData: [
{
rowNo: '1',
batch: '1',
hospital: '济南迪安中心办事处',
address: '济南市高新区颖秀路2755号',
dateTime: '6:30',
stopTime: 15,
pkgs: '-',
coordinate: '117.13394400,36.67904500'
},
// {
// rowNo: '2',
// batch: '1',
// hospital: '济南样本室对接点',
// address: '济南市高新区颖秀路2755号',
// dateTime: '6:50',
// stopTime: 10,
// pkgs: "-",
// coordinate: '117.13394400,36.67904500'
// },
{
rowNo: '3',
batch: '1',
hospital: '济南西站对接点',
address: '济南市槐荫区齐鲁大道6号',
dateTime: '7:50',
stopTime: 20,
pkgs: '-',
coordinate: '116.89177900,36.66887900'
},
{
rowNo: '4',
batch: '1',
hospital: '济南和合医学检验有限公司',
address: '槐荫区美里湖555号路海那城总部42号楼',
dateTime: '8:55',
stopTime: 15,
pkgs: 100,
coordinate: '116.91937000,36.72000800'
},
{
rowNo: '5',
batch: '1',
hospital: '山东第一医科大学附属皮肤病医院',
address: '济南市经十路27397号',
dateTime: '9:30',
stopTime: 10,
pkgs: 100,
coordinate: '116.92826100,36.65210900'
},
{
rowNo: '6',
batch: '1',
hospital: '山东禾力升医学检验实验室有限公司',
address: '济南市市中区南辛庄西路丰润 怡邻居西门',
dateTime: '10:00',
stopTime: 10,
pkgs: 100,
coordinate: '116.96255900,36.63623600'
},
{
rowNo: '7',
batch: '1',
hospital: '市中慢病第四人民医院青龙山分院',
address: '山东省济南市市中区南辛庄西路272号',
dateTime: '10:20',
stopTime: 40,
pkgs: 100,
coordinate: '116.95988200,36.62819100'
},
{
rowNo: '8',
batch: '1',
hospital: '山东省医学科学院放射医学研究所',
address: '济南经十路89号9956',
dateTime: '11:15',
stopTime: 15,
pkgs: 100,
coordinate: '117.01788200,36.64911300'
},
{
rowNo: '9',
batch: '1',
hospital: '山东省分析测试中心',
address: '山东省济南市历下区科院路19号详情',
dateTime: '11:40',
stopTime: 10,
pkgs: 100,
coordinate: '117.04783900,36.64556100'
},
// {
// rowNo: '10',
// batch: '1',
// hospital: '济南汇安健康管理有限公司历下门诊部',
// address: '济南市历下区文化西路15号',
// dateTime: '12:05',
// stopTime: 120,
// pkgs: 100,
// coordinate: '117.03081400,36.65417800'
// },
// {
// rowNo: '11',
// batch: '1',
// hospital: '武警山东总队医院',
// address: '山东省济南市历下区浆水泉路12--8号',
// dateTime: '14:45',
// stopTime: 15,
// pkgs: 100,
// coordinate: '117.08718600,36.65631700'
// },
{
rowNo: '10',
batch: '1',
hospital: '济南样本室对接点',
address: '济南市历下区颖秀路2755号',
dateTime: '15:20',
stopTime: 30,
pkgs: 100,
coordinate: '117.13394400,36.67904500'
}
]
},
{
name: '路飞',
plate: '德州1333887',
departure: '德州办事处',
arrival: '德州办事处',
departureDate: '08:30',
customerData: [
{
rowNo: '1',
batch: '1',
hospital: '德州办事处',
address: '德州市德城区世纪嘉园小区',
dateTime: '8:40',
stopTime: 20,
pkgs: '-',
coordinate: '116.33733900,37.42873700'
},
{
rowNo: '2',
batch: '1',
hospital: '德州交通医院',
address: '德城区东风中路389号',
dateTime: '9:15',
stopTime: 20,
pkgs: 2,
coordinate: '116.31887300,37.44295900'
},
{
rowNo: '3',
batch: '1',
hospital: '德州市人民医院',
address: '德州市新湖大街1751号',
dateTime: '9:47',
stopTime: 100,
pkgs: 41,
coordinate: '116.30555600,37.45116400'
},
{
rowNo: '4',
batch: '1',
hospital: '德州市人民医院(特检)',
address: '德州市新湖大街1751号',
dateTime: '11:32',
stopTime: 15,
pkgs: 1,
coordinate: '116.30555600,37.45116400'
},
{
rowNo: '5',
batch: '1',
hospital: '德州市立医院对接点',
address: '德州市德城区三八中路1766号',
dateTime: '11:55',
stopTime: 20,
pkgs: '-',
coordinate: '116.29370300,37.45320200'
},
// {
// rowNo: '6',
// batch: '1',
// hospital: '德州市立医院',
// address: '山东省德州市德城区三八路1766号',
// dateTime: '12:55',
// stopTime: 90,
// pkgs: 2,
// coordinate: '116.29370300,37.45320200'
// },
// {
// rowNo: '7',
// batch: '1',
// hospital: '德棉医院',
// address: '德州市运河开发区纺织大街522号',
// dateTime: '14:37',
// stopTime: 20,
// pkgs: "-",
// coordinate: '116.27572300,37.45761700'
// },
{
rowNo: '8',
batch: '1',
hospital: '德州汽车站对接点',
address: '德州市德城区东风路1667号',
dateTime: '15:12',
stopTime: 15,
pkgs: '-',
coordinate: '116.29082500,37.44405800'
},
{
rowNo: '9',
batch: '1',
hospital: '德州办事处',
address: '德州市德城区世纪嘉园小区',
dateTime: '15:52',
stopTime: 20,
pkgs: '-',
coordinate: '116.33733900,37.42873700'
}
]
},
{
name: '田耀中',
plate: '鲁A790Z9',
departure: '聊城联络处',
arrival: '聊城联络处对接点',
departureDate: '09:30',
customerData: [
{
rowNo: '1',
batch: '1',
hospital: '聊城联络处',
address: '山东省聊城市东昌府区',
dateTime: '8:00',
stopTime: 10,
pkgs: '-',
coordinate: '115.98849100,36.43464500'
},
{
rowNo: '2',
batch: '1',
hospital: '聊城市东昌府区侯营镇卫生院',
address: '山东省聊城市东昌府区侯营镇侯营村',
dateTime: '8:35',
stopTime: 10,
pkgs: 100,
coordinate: '115.88725200,36.39946400'
},
{
rowNo: '3',
batch: '1',
hospital: '聊城市东昌府区和光诊所',
address: '山东省聊城市东昌府区柳园街道陈口路金柱大学城A区30幢s30-113号商铺',
dateTime: '9:12',
stopTime: 10,
pkgs: 100,
coordinate: '116.01666300,36.44393800'
},
{
rowNo: '4',
batch: '1',
hospital: '聊城市东昌府区韩集镇卫生院',
address: '山东省聊城市东昌府区韩集镇政府',
dateTime: '9:55',
stopTime: 10,
pkgs: 100,
coordinate: '116.18228000,36.40897800'
},
{
rowNo: '5',
batch: '1',
hospital: '茌平万里行中医诊所',
address: '聊城市茌平县建设路1416号',
dateTime: '10:40',
stopTime: 10,
pkgs: 100,
coordinate: '116.21077700,36.56289800'
},
{
rowNo: '6',
batch: '1',
hospital: '聊城市茌平区人民医院',
address: '聊城市茌平县文化路99号',
dateTime: '11:00',
stopTime: 15,
pkgs: 100,
coordinate: '116.24962100,36.57960700'
},
{
rowNo: '7',
batch: '1',
hospital: '聊城市茌平区中医医院',
address: '聊城市茌平区新政西路1163号',
dateTime: '11:22',
stopTime: 30,
pkgs: 100,
coordinate: '116.24271400,36.58568300'
},
{
rowNo: '8',
batch: '1',
hospital: '茌平县和睦家妇科诊所',
address: '茌平县三产院内',
dateTime: '12:22',
stopTime: 5,
pkgs: 100,
coordinate: '116.23697900,36.58427100'
},
{
rowNo: '9',
batch: '1',
hospital: '聊城市茌平区温陈街道社区卫生服务中心',
address: '聊城市茌平区温陈街道',
dateTime: '12:47',
stopTime: 5,
pkgs: 100,
coordinate: '116.24984700,36.59027400'
},
{
rowNo: '10',
batch: '1',
hospital: '聊城市茌平区胡屯镇卫生院',
address: '聊城市茌平区新政西路1163号',
dateTime: '13:12',
stopTime: 10,
pkgs: 100,
coordinate: '116.24271400,36.58568300'
},
{
rowNo: '11',
batch: '1',
hospital: '高唐县中医院',
address: '高唐县东兴路16号',
dateTime: '13:52',
stopTime: 10,
pkgs: 100,
coordinate: '116.25357800,36.85772200'
},
{
rowNo: '12',
batch: '1',
hospital: '高唐县人民医院',
address: '山东省高唐县金城西路99号',
dateTime: '14:17',
stopTime: 15,
pkgs: 100,
coordinate: '116.22798600,36.86687600'
},
{
rowNo: '13',
batch: '1',
hospital: '聊城市茌平区第二人民医院',
address: '茌平县博平镇政府街',
dateTime: '15:04',
stopTime: 15,
pkgs: 100,
coordinate: '116.11760000,36.58789400'
},
// {
// rowNo: '14',
// batch: '1',
// hospital: '聊城市茌平区洪官屯镇卫生院',
// address: '聊城市茌平区洪官屯镇政府驻地',
// dateTime: '15:47',
// stopTime: 15,
// pkgs: 100,
// coordinate: '116.06041900,36.39670700'
// },
{
rowNo: '15',
batch: '1',
hospital: '聊城汽车总站对接点',
address: '聊城市东昌府区建设路与柳园北路交汇处西北角',
dateTime: '16:22',
stopTime: 8,
pkgs: '-',
coordinate: '115.98847500,36.47286500'
},
// {
// rowNo: '16',
// batch: '1',
// hospital: '聊城市东昌府区妇幼保健院(两癌)',
// address: '山东省聊城市东昌府区振兴西路129号',
// dateTime: '16:40',
// stopTime: 50,
// pkgs: 100,
// coordinate: '115.95710000,36.46834600'
// },
{
rowNo: '17',
batch: '1',
hospital: '聊城联络处',
address: '山东省聊城市东昌府区',
dateTime: '17:43',
stopTime: 30,
pkgs: '-',
coordinate: '115.98849100,36.43464500'
},
{
rowNo: '18',
batch: '1',
hospital: '聊城联络处对接点',
address: '山东省聊城市东昌府区',
dateTime: '18:18',
stopTime: 20,
pkgs: '-',
coordinate: '115.98849100,36.43464500'
}
]
},
{
name: '尹逊武',
plate: '济南2595139',
departure: '尹逊武家',
arrival: '尹逊武家',
departureDate: '06:30',
customerData: [
{
rowNo: '1',
batch: '1',
hospital: '尹逊武家',
address: '山东省济南市历城区北园大街57号',
dateTime: '7:30',
stopTime: 30,
pkgs: 0,
coordinate: '117.05366200,36.69689900'
},
{
rowNo: '2',
batch: '1',
hospital: '山东大学齐鲁医院',
address: '济南市文化西路107号',
dateTime: '8:50',
stopTime: 190,
pkgs: 100,
coordinate: '117.01839000,36.65659000'
},
// {
// rowNo: '3',
// batch: '1',
// hospital: '山东省中医院(西院)',
// address: '山东省济南市文化西路42号',
// dateTime: '11:25',
// stopTime: 30,
// pkgs: 100,
// coordinate: '117.02325300,36.65510600'
// },
{
rowNo: '4',
batch: '1',
hospital: '济南市中医医院1',
address: '山东省济南市槐荫区美里路555号海那城总部24号楼101单元401',
dateTime: '12:05',
stopTime: 30,
pkgs: 100,
coordinate: '116.91984000,36.72078200'
},
{
rowNo: '5',
batch: '1',
hospital: '济南丽合医疗美容医院有限公司',
address: '山东省济南市历下区黑虎泉北路61号',
dateTime: '13:15',
stopTime: 10,
pkgs: 100,
coordinate: '117.03587900,36.67266400'
},
// {
// rowNo: '6',
// batch: '1',
// hospital: '山东省千佛山医院',
// address: '经十路山师东路',
// dateTime: '13:40',
// stopTime: 20,
// pkgs: 100,
// coordinate: '117.04485100,36.64754900'
// },
{
rowNo: '7',
batch: '1',
hospital: '山东第一医科大学第一附属医院',
address: '山东省济南市历下区经十路16766号',
dateTime: '14:05',
stopTime: 20,
pkgs: 100,
coordinate: '117.04244800,36.64765800'
},
{
rowNo: '8',
batch: '1',
hospital: '山东大学齐鲁医院',
address: '济南市文化西路107号',
dateTime: '14:40',
stopTime: 140,
pkgs: 100,
coordinate: '117.01839000,36.65659000'
},
{
rowNo: '9',
batch: '1',
hospital: '济南长途汽车总站对接点',
address: '济南市天桥区济洛路131号',
dateTime: '17:25',
stopTime: 15,
pkgs: 0,
coordinate: '116.99360600,36.68543900'
},
{
rowNo: '10',
batch: '1',
hospital: '尹逊武家',
address: '山东省济南市历城区北园大街57号',
dateTime: '18:10',
stopTime: 5,
pkgs: 0,
coordinate: '117.05366200,36.69689900'
}
]
},
{
name: '孙天麟',
plate: '鲁A2Q3C2',
departure: '济南迪安中心办事处',
arrival: '济南样本室对接点',
departureDate: '09:30',
customerData: [
{
rowNo: '1',
batch: '1',
hospital: '济南迪安中心办事处',
address: '济南市高新区颖秀路2755号',
dateTime: '14:00',
stopTime: 30,
pkgs: '-',
coordinate: '117.13394400,36.67904500'
},
{
rowNo: '2',
batch: '1',
hospital: '济南佰年颐堂中医医院有限公司',
address: '山东省济南市历城区工业北路180号院内办公楼2号楼1层',
dateTime: '14:55',
stopTime: 10,
pkgs: 100,
coordinate: '117.26118400,36.63685400'
},
// {
// rowNo: '3',
// batch: '1',
// hospital: '山东元辰生物医药科技集团有限公司',
// address: '华山街道丑父路135号华山片区安置区二区S3号楼商业区四层',
// dateTime: '15:20',
// stopTime: 10,
// pkgs: 100,
// coordinate: '117.06162300,36.68773700'
// },
// {
// rowNo: '4',
// batch: '1',
// hospital: '山东大学第二医院(检验科)',
// address: '山东大学第二医院(检验科)',
// dateTime: '15:50',
// stopTime: 30,
// pkgs: 100,
// coordinate: '117.04054100,36.69042100'
// },
{
rowNo: '5',
batch: '1',
hospital: '山东省立第三医院',
address: '山东省济南市无影山中路12号',
dateTime: '16:40',
stopTime: 60,
pkgs: 100,
coordinate: '116.98967800,36.68406100'
},
{
rowNo: '6',
batch: '1',
hospital: '济南长途汽车总站对接点',
address: '济南市天桥区济洛路131号',
dateTime: '17:45',
stopTime: 60,
pkgs: '-',
coordinate: '116.99360600,36.68543900'
},
// {
// rowNo: '7',
// batch: '1',
// hospital: '济南样本室对接点',
// address: '济南市历下区颖秀路2755号',
// dateTime: '19:45',
// stopTime: 10,
// pkgs: '-',
// coordinate: '117.13394400,36.67904500'
// },
{
rowNo: '8',
batch: '2',
hospital: '艾迪康',
address: '济南市天桥区田家庄东路4号',
dateTime: '20:45',
stopTime: 5,
pkgs: 100,
coordinate: '116.97534100,36.69010900'
},
{
rowNo: '9',
batch: '2',
hospital: '济南西站对接点',
address: '济南市槐荫区齐鲁大道6号',
dateTime: '21:10',
stopTime: 15,
pkgs: '-',
coordinate: '116.89177900,36.66887900'
},
// {
// rowNo: '10',
// batch: '2',
// hospital: '济南长途汽车总站对接点',
// address: '济南市天桥区济洛路131号',
// dateTime: '21:45',
// stopTime: 15,
// pkgs: '-',
// coordinate: '116.99360600,36.68543900'
// },
{
rowNo: '11',
batch: '2',
hospital: '济南样本室对接点',
address: '济南市历下区颖秀路2755号',
dateTime: '22:40',
stopTime: 10,
pkgs: '-',
coordinate: '117.13394400,36.67904500'
}
]
}
]
}
},
methods: {
getDate() {
this.date = new Date()
},
// 即时规划
instantPlanning() {
console.log(this.cloneData)
this.cloneData.batch = this.currentData.batch
this.cloneData.departureDate = this.currentData.departureDate
let obj = _.cloneDeep(this.orginData[this.index])
if (this.index == 4) {
if (this.currentData.batch == '第一批') {
obj.customerData = this.cloneData.customerData.filter(item => item.batch == 1)
obj.arrival = this.cloneData.customerData.findLast(element => element.batch == '1').hospital
obj.batch = '第一批'
this.$store.dispatch('setOrder', JSON.stringify(obj))
} else {
obj.customerData = this.cloneData.customerData.filter(item => item.batch == 2)
obj.customerData.unshift(this.cloneData.customerData.findLast(element => element.batch == '1'))
obj.departure = this.cloneData.customerData[this.cloneData.customerData.length - 1].hospital
obj.batch = '第二批'
this.$store.dispatch('setOrder', JSON.stringify(obj))
}
} else {
this.$store.dispatch('setOrder', JSON.stringify(this.cloneData))
}
img {
width: 64px;
this.$router.push({ path: '/about' })
},
// 下一个
nextOrder() {
console.log(this.orginData)
if (this.index == this.orginData.length - 1) {
Toast.fail('已经是最后一条')
return
}
span {
margin-left: 16px;
font-weight: 500;
this.index++
this.cloneData = _.cloneDeep(this.orginData[this.index])
this.currentData = _.cloneDeep(this.orginData[this.index])
if (this.index == 4) {
this.currentData.customerData = this.currentData.customerData.filter(item => item.batch == 1)
}
this.currentData.customerData.shift()
this.currentData.batch = '第一批'
this.currentData.arrival = this.cloneData.customerData.findLast(element => element.batch == '1').hospital
// this.currentData.departureDate = this.cloneData.customerData.findLast(element => element.batch == '1').dateTime
this.currentData.customerData.forEach((item, index) => (item.rowNo = index + 1))
this.$forceUpdate()
},
// 上一个
lastOrder() {
console.log(this.orginData)
if (this.index == 0) {
Toast.fail('已经是第一条')
return
}
this.index--
this.cloneData = _.cloneDeep(this.orginData[this.index])
this.currentData = _.cloneDeep(this.orginData[this.index])
if (this.index == 4) {
this.currentData.customerData = this.currentData.customerData.filter(item => item.batch == 1)
}
this.currentData.customerData.shift()
this.currentData.batch = '第一批'
this.currentData.arrival = this.cloneData.customerData.findLast(element => element.batch == '1').hospital
// this.currentData.departureDate = this.cloneData.customerData.findLast(element => element.batch == '1').dateTime
this.currentData.customerData.forEach((item, index) => (item.rowNo = index + 1))
this.$forceUpdate()
},
// 下一批
nextCargo() {
console.log(this.orginData[this.index].customerData)
if (this.index == 4) {
this.currentData.customerData = this.cloneData.customerData.filter(item => item.batch == 2)
this.currentData.departure = this.cloneData.customerData.findLast(element => element.batch == '1').hospital
this.currentData.departureDate = this.cloneData.customerData.findLast(element => element.batch == '1').dateTime
this.currentData.customerData.forEach((item, index) => (item.rowNo = index + 1))
this.currentData.batch = '第二批'
}
console.log(this.currentData.customerData)
},
// 上一批
lastCargo() {
if (this.index == 4) {
this.currentData.customerData = this.cloneData.customerData.filter(item => item.batch == 1)
this.currentData.arrival = this.cloneData.customerData.findLast(element => element.batch == '1').hospital
this.currentData.departureDate = this.cloneData.customerData[0].dateTime
this.currentData.customerData.forEach((item, index) => (item.rowNo = index + 1))
this.currentData.batch = '第一批'
}
}
.demo-home__desc {
text-align: center;
margin: 0 0 20px;
color: rgba(69, 90, 100, 0.6);
font-size: 28px;
}
},
created() {
this.orginData.forEach(item => item.customerData.forEach(item1 => (item1.status = '未去')))
this.cloneData = _.cloneDeep(this.orginData[this.index])
this.currentData = _.cloneDeep(this.orginData[this.index])
this.currentData.batch = '第一批'
this.currentData.customerData.shift()
console.log('cloneData', this.cloneData)
this.currentData.customerData.forEach((item, index) => (item.rowNo = index + 1))
console.log(this.currentData.customerData)
this.getDate()
}
}
</script>
<style lang="scss" scoped>
.title {
padding: 10px;
}
.header-text {
font-size: 24px;
font-weight: 800;
}
.table-box {
margin: 12px 0px;
.th-row {
height: 56px;
line-height: 56px;
background: #ebf1f7;
padding: 0px 12px;
font-size: 36px;
}
.tb-row {
font-size: 48px;
height: 56px;
line-height: 56px;
padding: 0px 12px;
}
}
.fixed-bottom-right {
// position: absolute;
margin-top: 80px;
bottom: 20px;
right: 0px;
width: 100%;
}
</style>
......
<template>
<div>
<div class="title">
<van-row type="flex" style="margin-top: 15px" justify="space-around">
<van-col span="24" class="header-text" style="display: flex">
<van-cell-group>
城市:
<select name="pets" id="pet-select" v-model="city" class="city" @change="cityChage($event)">
<option v-for="item in cityOptions" :key="item.value" :value="item.value">{{ item.label }}</option>
</select>
</van-cell-group>
</van-col>
</van-row>
</div>
<div style="width: 100%; overflow-x: auto">
<Table-vant :option="option" :tableData="resultData" width="790px">
<template v-slot:startTime="{ item }">
<div>{{ item.startTime | formatDate('hh:mm:ss') }}</div>
</template>
<template v-slot:lastArrivalTime="{ item }">
<div>{{ item.lastArrivalTime | formatDate('hh:mm:ss') }}</div>
</template>
<template v-slot:opreate="{ item }">
<button class="text-button" @click="geDetail(item)">详情</button>
</template>
</Table-vant>
</div>
</div>
</template>
<script>
import TableVant from '@/components/Table.vue'
import { getPlan, getSession } from '@/api/user.js'
import { Toast } from 'vant'
import _ from 'lodash'
export default {
name: '',
props: {},
components: { TableVant },
data() {
return {
city: '',
targetData: [],
departureData: [],
cityOptions: [
{ label: '济南', value: '济南' },
{ label: '德州', value: '德州' },
{ label: '聊城', value: '聊城' }
],
resultData: [
{
address: '',
batch: '',
coordinate: '',
dateTime: '',
hospital: '',
pkgs: '',
rowNo: '1',
status: '',
stopTime: ''
}
],
option: {
column: [
{
label: '序号',
tableDataprop: 'rowNo',
width: '50px',
align: 'center'
},
{
label: '取件人',
tableDataprop: 'name',
width: '50px'
},
{
label: '规划路线',
tableDataprop: 'path',
width: '300px'
},
{
label: '总里程',
tableDataprop: 'totalDistance',
width: '80px'
},
{
label: '总耗时',
tableDataprop: 'totalTimes',
width: '80px'
},
{
label: '出发时间',
tableDataprop: 'startTime',
width: '80px'
},
{
label: '回程时间',
tableDataprop: 'lastArrivalTime',
width: '80px'
},
{
label: '操作',
tableDataprop: 'opreate',
width: '80px',
align: 'center'
}
]
}
}
},
computed: {},
watch: {},
methods: {
geDetail(e) {
this.$store.dispatch('setCurentData', JSON.stringify(e))
this.$router.push({ path: '/about1', query: { data: JSON.stringify(e) } })
console.log(e)
},
getSessionId() {
let params = {
client_id: 'dd48c515fcde43bea0b5bd0b8f77e119',
grant_type: 'client_credentials',
client_secret: 'c6602114c9ba488b877d0d84b0e5e700',
scope: 'read'
}
getSession(params, {}).then(res => {
this.accessToken = res.access_token
this.initData([...this.departureData, ...this.targetData])
})
},
// 请求数据案例
initData(list) {
Toast.loading({
duration: 0
})
console.log('123', list)
let arr = _.cloneDeep(list)
const data = {
region: this.city,
plate: '',
departure: '',
arrival: '',
departureDate: '06:30',
customerData: arr
}
const params = {
method: 'GetRouteMatrix_test',
format: 'json',
sessionId: this.accessToken,
sign: '203EF639BA15A6E001B59DB78AB81470B7893CAF',
appKey: 'dd48c515fcde43bea0b5bd0b8f77e119',
v: '1.0'
}
getPlan(data, params)
.then(res => {
Toast.clear()
let newArr = JSON.parse(res).returnModel
console.log('返回的数据', newArr)
newArr.forEach(item => {
item.data.forEach((e, index) => {
e.distance = e.distance.toFixed(2)
e.hospital = e.returnName
e.status = '未去'
e.coordinate = e.destination
e.isOrigin = 'N'
if (index == item.data.length - 1) {
e.pkgs = 0
} else {
e.pkgs = 100
}
// e.distance.toFixed(2)
})
item.data.pop()
})
this.resultData = newArr
console.log('aaaaa', this.resultData)
let arrs = this.resultData
arrs.forEach((item, index) => {
item.rowNo = index + 1
})
})
.catch(() => {})
}
},
created() {
this.city = this.$store.state.app.city
this.targetData = this.$store.getters.getTarget
this.departureData = JSON.parse(this.$store.state.app.depart)
this.resultData = JSON.parse(this.$store.state.app.order)
},
mounted() {}
}
</script>
<style lang="scss" scoped>
.header-text {
font-size: 36px;
font-weight: 800;
}
</style>
<template>
<div>
<div class="title">
<div>目标列表</div>
<van-row type="flex" style="margin-top: 15px" justify="space-around">
<van-col span="24" class="header-text" style="display: flex">
<!-- <van-datetime-picker v-model="currentData.departureDate" type="time" title="选择时间" /> -->
<van-cell-group>
<!-- <van-field v-model="currentData.departureDate" label="出发时间" placeholder="请输入出发时间" /> -->
城市:
<select name="pets" id="pet-select" class="city" v-model="city">
<option v-for="item in cityOptions" :key="item.value" :value="item.value">{{ item.label }}</option>
</select>
</van-cell-group>
<!-- 出发时间:<van-field v-model="currentData.departureDate" size="small" placeholder="请输入时间" /> -->
</van-col>
</van-row>
</div>
<div style="width: 100%; overflow-x: auto; margin-bottom: 50px">
<Table-vant :option="option" :tableData="currentData" :showCheck="true" width="480px">
<template v-slot:dateTime="{ item }">
<input type="text" v-model="item.dateTime" style="width: 80%; height: 25px" />
</template>
<template v-slot:vehicleType="{ item }">
<div>{{ item.vehicleType == 1 ? '电动汽车' : '电动车' }}</div>
</template>
</Table-vant>
</div>
<div class="fixed-bottom-right">
<div style="display: flex; flex-direction: row-reverse; margin-top: 10px">
<!-- <van-button round plain type="primary" @click="instantPlanning">即时规划</van-button> -->
<van-button round plain type="primary" @click="nextStep">下一步</van-button>
</div>
</div>
</div>
</template>
<script>
import TableVant from '@/components/Table.vue'
import { getPlan, getSession } from '@/api/user.js'
import { Toast } from 'vant'
import _ from 'lodash'
export default {
components: { TableVant },
data() {
return {
index: 0,
date: '',
cloneData: {},
checkeData: [],
city: '',
currentData: [],
departureData: [],
cityOptions: [
{ label: '济南', value: '济南' },
{ label: '德州', value: '德州' },
{ label: '聊城', value: '聊城' }
],
option: {
column: [
{
label: '序号',
tableDataprop: 'rowNo',
align: 'center',
width: '50px'
},
{
label: '目标点',
tableDataprop: 'hospital',
width: '210px'
},
{
label: '取样数',
tableDataprop: 'pkgs',
width: '50px',
align: 'right'
},
{
label: '取样时间',
tableDataprop: 'dateTime',
width: '80px'
},
{
label: '使用工具',
tableDataprop: 'vehicleType',
width: '80px'
}
]
},
TargetList: [
{
name: '',
plate: '',
departure: '',
arrival: '',
departureDate: '06:30',
customerData: [
{
rowNo: '2',
batch: '1',
hospital: '济南西站对接点',
address: '济南市槐荫区齐鲁大道6号',
dateTime: '07:50',
stopTime: 20,
pkgs: 0,
coordinate: '116.89177900,36.66887900',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '3',
batch: '1',
hospital: '济南和合医学检验有限公司',
address: '槐荫区美里湖555号路海那城总部42号楼',
dateTime: '08:55',
stopTime: 15,
pkgs: 0,
coordinate: '116.91937000,36.72000800',
isOrigin: 'N',
vehicleType: '1',
timeInterval: '09:00,10:00'
},
{
rowNo: '4',
batch: '1',
hospital: '山东第一医科大学附属皮肤病医院',
address: '济南市经十路27397号',
dateTime: '09:30',
stopTime: 10,
pkgs: 100,
coordinate: '116.92826100,36.65210900',
isOrigin: 'N',
vehicleType: '1',
timeInterval: '09:00,11:30'
},
{
rowNo: '5',
batch: '1',
hospital: '山东禾力升医学检验实验室有限公司',
address: '济南市市中区南辛庄西路丰润 怡邻居西门',
dateTime: '10:00',
stopTime: 10,
pkgs: 100,
coordinate: '116.96255900,36.63623600',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '6',
batch: '1',
hospital: '市中慢病第四人民医院青龙山分院',
address: '山东省济南市市中区南辛庄西路272号',
dateTime: '10:20',
stopTime: 40,
pkgs: 100,
coordinate: '116.95988200,36.62819100',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '7',
batch: '1',
hospital: '山东省医学科学院放射医学研究所',
address: '济南经十路89号9956',
dateTime: '11:15',
stopTime: 15,
pkgs: 100,
coordinate: '117.01788200,36.64911300',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '8',
batch: '1',
hospital: '山东省分析测试中心',
address: '山东省济南市历下区科院路19号详情',
dateTime: '11:40',
stopTime: 10,
pkgs: 100,
coordinate: '117.04783900,36.64556100',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '9',
batch: '1',
hospital: '济南汇安健康管理有限公司历下门诊部',
address: '济南市历下区文化西路15号',
dateTime: '12:05',
stopTime: 120,
pkgs: 100,
coordinate: '117.03081400,36.65417800',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '10',
batch: '1',
hospital: '武警山东总队医院',
address: '山东省济南市历下区浆水泉路12--8号',
dateTime: '14:45',
stopTime: 15,
pkgs: 100,
coordinate: '117.08718600,36.65631700',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '11',
batch: '1',
hospital: '济南样本室对接点',
address: '济南市历下区颖秀路2755号',
dateTime: '15:20',
stopTime: 30,
pkgs: 100,
coordinate: '117.13394400,36.67904500',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '2',
batch: '1',
hospital: '山东大学齐鲁医院',
address: '济南市文化西路107号',
dateTime: '08:50',
stopTime: 190,
pkgs: 100,
coordinate: '117.01839000,36.65659000',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '3',
batch: '1',
hospital: '山东省中医院(西院)',
address: '山东省济南市文化西路42号',
dateTime: '11:25',
stopTime: 30,
pkgs: 100,
coordinate: '117.02325300,36.65510600',
isOrigin: 'N',
vehicleType: '2',
timeInterval: '09:00,12:00'
},
{
rowNo: '4',
batch: '1',
hospital: '济南市中医医院1',
address: '山东省济南市槐荫区美里路555号海那城总部24号楼101单元401',
dateTime: '12:05',
stopTime: 30,
pkgs: 100,
coordinate: '116.91984000,36.72078200',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '5',
batch: '1',
hospital: '济南丽合医疗美容医院有限公司',
address: '山东省济南市历下区黑虎泉北路61号',
dateTime: '13:15',
stopTime: 10,
pkgs: 100,
coordinate: '117.03587900,36.67266400',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '6',
batch: '1',
hospital: '山东省千佛山医院',
address: '经十路山师东路',
dateTime: '13:40',
stopTime: 20,
pkgs: 100,
coordinate: '117.04485100,36.64754900',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '7',
batch: '1',
hospital: '山东第一医科大学第一附属医院',
address: '山东省济南市历下区经十路16766号',
dateTime: '14:05',
stopTime: 20,
pkgs: 100,
coordinate: '117.04244800,36.64765800',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '8',
batch: '1',
hospital: '济南长途汽车总站对接点',
address: '济南市天桥区济洛路131号',
dateTime: '17:25',
stopTime: 15,
pkgs: 0,
coordinate: '116.99360600,36.68543900',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '2',
batch: '1',
hospital: '山东省省立医院东院',
address: '山东省济南市历下区经十路9677号',
dateTime: '09:05',
stopTime: 90,
pkgs: 100,
coordinate: '117.12129000,36.66338600',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '3',
batch: '1',
hospital: '山东省省立医院东院(特检)',
address: '山东省济南市历下区经十路9667号',
dateTime: '10:40',
stopTime: 30,
pkgs: 100,
coordinate: '117.03401900,36.64879400',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '新华卓越门诊部(济南)有限公司',
address: '济南市历下区龙奥北路8-4号玉兰广场2号楼3层',
dateTime: '11:20',
stopTime: 10,
pkgs: 100,
coordinate: '117.12426800,36.65054700',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南市历下区姚家办事处仁合社区卫生服务站',
address: '济南市历下区荆山路438-62号',
dateTime: '11:55',
stopTime: 15,
pkgs: 100,
coordinate: '117.07670700,36.64310600',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南迪安中心办事处',
address: '济南市高新区颖秀路2755号',
dateTime: '12:40',
stopTime: 30,
pkgs: 100,
coordinate: '117.13394400,36.67904500',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南云康达安医学检验实验室有限公司',
address: '济南市高新区颖秀路2766号迪亚产业园东楼二楼',
dateTime: '13:40',
stopTime: 10,
pkgs: 100,
coordinate: '117.13506400,36.67946300',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南爱新卓尔医学检验有限公司',
address: '济南市历下区天辰路1318',
dateTime: '13:55',
stopTime: 10,
pkgs: 100,
coordinate: '117.13495300,36.68222100',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南高新区雅居园社区卫生服务站',
address: '济南高新区雅居园小区北门商 用房1期2区1号楼1单元 2201.202.203室',
dateTime: '14:15',
stopTime: 10,
pkgs: 100,
coordinate: '117.12526800,36.67245200',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '山东省立医院',
address: '济南市经五纬七路324号',
dateTime: '08:25',
stopTime: 210,
pkgs: 100,
coordinate: '116.98415700,36.65685700',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南市槐荫区西市场办事处纬十路社区卫生服务站',
address: '济南市槐荫区经三纬十一路330号',
dateTime: '12:05',
stopTime: 10,
pkgs: 100,
coordinate: '116.97392000,36.65924000',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南市天桥区纬北经纬嘉园社区卫生服务站',
address: '经一路经纬嘉园住宅小区141-31号',
dateTime: '16:30',
stopTime: 20,
pkgs: 100,
coordinate: '120.08842500,30.87737500',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南市槐荫区五里沟公祥街社区卫生服务站',
address: '槐荫区纬五路39-7',
dateTime: '16:55',
stopTime: 15,
pkgs: 100,
coordinate: '116.98715800,36.66398400',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '山东光正眼科医院有限公司',
address: '济南市市中区经二路223号',
dateTime: '17:15',
stopTime: 50,
pkgs: 100,
coordinate: '116.99099400,36.66410100',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '山东光正眼科医院有限公司',
address: '济南市市中区经二路223号',
dateTime: '17:15',
stopTime: 50,
pkgs: 100,
coordinate: '116.99099400,36.66410100',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '山东省康复医院',
address: '历城区唐冶新区围子山路3126号',
dateTime: '10:40',
stopTime: 50,
pkgs: 100,
coordinate: '117.24190100,36.68823600',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '山东水发生命科学研究有限公司',
address: '山东省济南市高新区大正路1777号生命科学城13号楼一层',
dateTime: '11:50',
stopTime: 15,
pkgs: 100,
coordinate: '117.32744800,36.70332300',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '章丘慢性病防治所对接点',
address: '济南市章丘区唐王山路1099号',
dateTime: '12:40',
stopTime: 15,
pkgs: 0,
coordinate: '117.53489000,36.69297100',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南万泉生物技术有限公司',
address: '济南市高新区港兴三路北段一号济南药谷研发平台区1号楼A座1305',
dateTime: '14:05',
stopTime: 15,
pkgs: 100,
coordinate: '117.22268400,36.66921200',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '健颐生物(药谷)',
address: '济南市历城区港兴三路济南药谷1号楼A座25楼',
dateTime: '14:25',
stopTime: 15,
pkgs: 100,
coordinate: '117.22278300,36.66978200',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '山东惠然生物科技有限公司',
address: '高新区港兴三路北段1号济南市药谷研发平台区2号楼1801房间',
dateTime: '14:45',
stopTime: 15,
pkgs: 100,
coordinate: '117.22239900,36.66859400',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '山东富优生命科学有限公司',
address: '山东富优生命科学有限公司',
dateTime: '15:05',
stopTime: 15,
pkgs: 100,
coordinate: '117.22283000,36.67004000',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '山东省齐鲁细胞治疗工程技术有限公司',
address: '山东省济南市高新区港兴三路1109号',
dateTime: '16:05',
stopTime: 10,
pkgs: 100,
coordinate: '117.22257900,36.65528700',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南高新开发区景琪综合门诊有限公司',
address: '高新区舜华路街道街道华奥路77号东鲁凤凰上都6-104',
dateTime: '16:35',
stopTime: 15,
pkgs: 100,
coordinate: '117.15647200,36.65323700',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南市历下区龙洞办事处社区卫生服务中心',
address: '历下区龙洞办事处锦屏家园龙锦生活广场10号楼02号铺',
dateTime: '17:05',
stopTime: 10,
pkgs: 100,
coordinate: '117.12264500,36.62768600',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南佰年颐堂中医医院有限公司',
address: '山东省济南市历城区工业北路180号院内办公楼2号楼1层',
dateTime: '14:55',
stopTime: 10,
pkgs: 100,
coordinate: '117.26118400,36.63685400',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '山东元辰生物医药科技集团有限公司',
address: '华山街道丑父路135号华山片区安置区二区S3号楼商业区四层',
dateTime: '15:20',
stopTime: 10,
pkgs: 100,
coordinate: '117.06162300,36.68773700',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '山东大学第二医院(检验科)',
address: '山东大学第二医院(检验科)',
dateTime: '15:50',
stopTime: 30,
pkgs: 100,
coordinate: '117.04054100,36.69042100',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '山东省立第三医院',
address: '山东省济南市无影山中路12号',
dateTime: '16:40',
stopTime: 60,
pkgs: 100,
coordinate: '116.98967800,36.68406100',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '艾迪康',
address: '济南市天桥区田家庄东路4号',
dateTime: '20:45',
stopTime: 5,
pkgs: 100,
coordinate: '116.97534100,36.69010900',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '历城奇鲁诊所',
address: '七里堡东路84号4号',
dateTime: '10:55',
stopTime: 10,
pkgs: 100,
coordinate: '117.07034900,36.69118200',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '山东省立第三医院(新城社区卫生服务中心)',
address: '济南市天桥区新黄路2567号',
dateTime: '11:25',
stopTime: 5,
pkgs: 100,
coordinate: '117.01213500,36.70852500',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '山东省立第三医院(药山站点)',
address: '山东省济南市天桥区药山西路南端',
dateTime: '11:50',
stopTime: 5,
pkgs: 100,
coordinate: '116.96048900,36.71312700',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '山东省立第三医院(济南市天桥人民医院)',
address: '济南市天桥区天桥街25号',
dateTime: '12:40',
stopTime: 15,
pkgs: 100,
coordinate: '116.96048900,36.71312700',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南市市中区七里山街道泉景天沅社区卫生服务站',
address: '济南市市中区郎茂山路4号101号',
dateTime: '13:15',
stopTime: 15,
pkgs: 100,
coordinate: '116.98310000,36.62614400',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '山东省南山医院有限责任公司',
address: '济南市市中区英雄山路134号',
dateTime: '13:40',
stopTime: 50,
pkgs: 100,
coordinate: '116.98310000,36.62614400',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '山东省南山医院有限责任公司(艾迪康站点)',
address: '济南市市中区英雄山路134号',
dateTime: '12:30',
stopTime: 5,
pkgs: 100,
coordinate: '117.00314900,36.62241000',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南市历下区第二人民医院',
address: '济南市历下区东关大街57号',
dateTime: '14:55',
stopTime: 15,
pkgs: 100,
coordinate: '117.04394500,36.67837900',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南三株酵本草医院有限公司',
address: '济南市历城区山大北路77-6号',
dateTime: '15:20',
stopTime: 10,
pkgs: 100,
coordinate: '117.06090000,36.67966900',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南市历城区妇幼保健计划生育服务中心(两癌)',
address: '济南市历城区洪楼西路45号',
dateTime: '15:35',
stopTime: 15,
pkgs: 100,
coordinate: '117.06136300,36.68004900',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '历城中医院',
address: '济南市历城区洪家楼南路26号',
dateTime: '15:55',
stopTime: 40,
pkgs: 100,
coordinate: '117.06652000,36.68147900',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南远大中医脑康医院有限公司',
address: '济南市历城区二环东路3889号',
dateTime: '16:40',
stopTime: 15,
pkgs: 100,
coordinate: '117.07276600,36.67283300',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南伊美尔整形美容医院有限公司',
address: '济南市解放路30-1号',
dateTime: '17:05',
stopTime: 10,
pkgs: 100,
coordinate: '117.06004900,36.66592800',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南市中心医院(精准中心)',
address: '山东省济南市历城区解放路105号',
dateTime: '17:25',
stopTime: 10,
pkgs: 100,
coordinate: '117.06652000,36.68147900',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南市中心医院(特检)',
address: '济南市历下区解放路105号',
dateTime: '17:40',
stopTime: 20,
pkgs: 100,
coordinate: '117.04767000,36.66776700',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南市济阳区人民医院',
address: '济阳县纬六路9号',
dateTime: '09:10',
stopTime: 80,
pkgs: 100,
coordinate: '116.98330600,36.66371900',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南市济阳区中医医院(病理)',
address: '山东省济南市济阳区纬二路112号',
dateTime: '10:40',
stopTime: 30,
pkgs: 100,
coordinate: '117.19134000,36.97515700',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南市济阳区中医医院',
address: '山东省济南市济阳区纬二路112号',
dateTime: '11:15',
stopTime: 120,
pkgs: 100,
coordinate: '117.19134000,36.97515700',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南市济阳区妇幼保健计划生育服务中心',
address: '山东省济南市济阳区老城街16号',
dateTime: '13:45',
stopTime: 30,
pkgs: 100,
coordinate: '117.21862800,36.97423500',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济南市济阳区妇幼保健院计划生育服务中心(站点)',
address: '济阳区济北街道开元大街166号',
dateTime: '14:30',
stopTime: 10,
pkgs: 100,
coordinate: '117.17039900,36.97523800',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济阳妇幼对接点',
address: '济阳区济北街道开元大街166号',
dateTime: '14:40',
stopTime: 5,
pkgs: 100,
coordinate: '117.17039900,36.97523800',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '济阳妇儿医院',
address: '济南市济 阳区德阳路与兴河街交叉口',
dateTime: '15:20',
stopTime: 10,
pkgs: 100,
coordinate: '117.12511900,36.93419300',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
}
]
},
{
name: '',
plate: '',
departure: '',
arrival: '',
departureDate: '08:00',
customerData: [
{
rowNo: '1',
batch: '1',
hospital: '德州交通医院',
address: '德城区东风中路389号',
dateTime: '09:15',
stopTime: 20,
pkgs: 2,
coordinate: '116.31887300,37.44295900',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '2',
batch: '1',
hospital: '德州市人民医院',
address: '德州市新湖大街1751号',
dateTime: '09:47',
stopTime: 100,
pkgs: 41,
coordinate: '116.30555600,37.45116400',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '3',
batch: '1',
hospital: '德州市人民医院(特检)',
address: '德州市新湖大街1751号',
dateTime: '11:32',
stopTime: 15,
pkgs: 1,
coordinate: '116.30555600,37.45116400',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '德州市立医院对接点',
address: '德州市德城区三八中路1766号',
dateTime: '11:55',
stopTime: 20,
pkgs: 100,
coordinate: '116.29370300,37.45320200',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '5',
batch: '1',
hospital: '德州市立医院',
address: '山东省德州市德城区三八路1766号',
dateTime: '12:55',
stopTime: 90,
pkgs: 2,
coordinate: '116.29370300,37.45320200',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '6',
batch: '1',
hospital: '德棉医院',
address: '德州市运河开发区纺织大街522号',
dateTime: '14:37',
stopTime: 20,
pkgs: 100,
coordinate: '116.27572300,37.45761700',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '7',
batch: '1',
hospital: '德州汽车站对接点',
address: '德州市德城区东风路1667号',
dateTime: '15:12',
stopTime: 15,
pkgs: 100,
coordinate: '116.29082500,37.44405800',
isOrigin: 'N',
vehicleType: '2',
timeInterval: ''
},
{
rowNo: '8',
batch: '1',
hospital: '武城县妇幼保健计划生育服务中心(两癌)',
address: '山东省德州市武城县振华西街1536号',
dateTime: '09:50',
stopTime: 10,
pkgs: 100,
coordinate: '116.06056800,37.21353300',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '9',
batch: '1',
hospital: '武城县老城镇仓上村卫生室',
address: '武城县老城镇仓上村',
dateTime: '10:30',
stopTime: 10,
pkgs: 100,
coordinate: '115.94163900,37.11129600',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '10',
batch: '1',
hospital: '武城县老城镇新运社区卫生室',
address: '武城县老城镇',
dateTime: '10:45',
stopTime: 10,
pkgs: 100,
coordinate: '115.89356900,37.14593200',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '11',
batch: '1',
hospital: '夏津县中医院',
address: '夏津县经开区北外环路',
dateTime: '11:30',
stopTime: 15,
pkgs: 100,
coordinate: '116.39217300,37.49376100',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '12',
batch: '1',
hospital: '夏津三鹤血液透析有限公司',
address: '山东省德州市夏津县银城街道西关街142号',
dateTime: '12:25',
stopTime: 15,
pkgs: 100,
coordinate: '116.01219400,36.95977800',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '13',
batch: '1',
hospital: '夏津慎安血液透析中心有限公司',
address: '山东省德州市夏津县银城街道西关南街132号',
dateTime: '12:45',
stopTime: 10,
pkgs: 100,
coordinate: '115.99462000,36.95193800',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '14',
batch: '1',
hospital: '临清市老赵庄镇卫生院',
address: '老赵庄镇老赵庄村199号',
dateTime: '13:25',
stopTime: 10,
pkgs: 100,
coordinate: '115.86014600,36.83849000',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '15',
batch: '1',
hospital: '李娅诊所',
address: '临清市黑庄民族小区',
dateTime: '13:55',
stopTime: 15,
pkgs: 100,
coordinate: '115.73074700,36.84652300',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '16',
batch: '1',
hospital: '临西县第二人民医院',
address: '河北省邢台市临西县河西镇顺河街7号',
dateTime: '14:25',
stopTime: 10,
pkgs: 100,
coordinate: '115.68843100,36.85466500',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '17',
batch: '1',
hospital: '聊城市第二人民医院(特检)',
address: '聊城市临清市先锋街道办事处健康街306号',
dateTime: '14:45',
stopTime: 10,
pkgs: 100,
coordinate: '115.70215500,36.85302700',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '18',
batch: '1',
hospital: '百康诊所',
address: '临清市观澜国际B3西4户',
dateTime: '15:09',
stopTime: 10,
pkgs: 100,
coordinate: '115.71547000,36.81913800',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '19',
batch: '1',
hospital: '聊城市第二人民医院(新院)',
address: '临清市315省道和新华路交汇处',
dateTime: '15:32',
stopTime: 10,
pkgs: 100,
coordinate: '115.59475300,36.75968600',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '20',
batch: '1',
hospital: '夏津联络处对接点',
address: '德州市夏津县泉林小区',
dateTime: '15:52',
stopTime: 15,
pkgs: 100,
coordinate: '115.99405300,36.97021100',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
}
]
},
{
name: '',
plate: '',
departure: '',
arrival: '',
departureDate: '08:00',
customerData: [
{
rowNo: '1',
batch: '1',
hospital: '聊城市东昌府区侯营镇卫生院',
address: '山东省聊城市东昌府区侯营镇侯营村',
dateTime: '08:35',
stopTime: 10,
pkgs: 100,
coordinate: '115.88725200,36.39946400',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '2',
batch: '1',
hospital: '聊城市东昌府区和光诊所',
address: '山东省聊城市东昌府区柳园街道陈口路金柱大学城A区30幢s30-113号商铺',
dateTime: '09:12',
stopTime: 10,
pkgs: 100,
coordinate: '116.01666300,36.44393800',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '3',
batch: '1',
hospital: '聊城市东昌府区韩集镇卫生院',
address: '山东省聊城市东昌府区韩集镇政府',
dateTime: '09:55',
stopTime: 10,
pkgs: 100,
coordinate: '116.18228000,36.40897800',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '4',
batch: '1',
hospital: '茌平万里行中医诊所',
address: '聊城市茌平县建设路1416号',
dateTime: '10:40',
stopTime: 10,
pkgs: 100,
coordinate: '116.21077700,36.56289800',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '5',
batch: '1',
hospital: '聊城市茌平区人民医院',
address: '聊城市茌平县文化路99号',
dateTime: '11:00',
stopTime: 15,
pkgs: 100,
coordinate: '116.24962100,36.57960700',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '6',
batch: '1',
hospital: '聊城市茌平区中医医院',
address: '聊城市茌平区新政西路1163号',
dateTime: '11:22',
stopTime: 30,
pkgs: 100,
coordinate: '116.24271400,36.58568300',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '7',
batch: '1',
hospital: '茌平县和睦家妇科诊所',
address: '茌平县三产院内',
dateTime: '12:22',
stopTime: 5,
pkgs: 100,
coordinate: '116.23697900,36.58427100',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '8',
batch: '1',
hospital: '聊城市茌平区温陈街道社区卫生服务中心',
address: '聊城市茌平区温陈街道',
dateTime: '12:47',
stopTime: 5,
pkgs: 100,
coordinate: '116.24984700,36.59027400',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '9',
batch: '1',
hospital: '聊城市茌平区胡屯镇卫生院',
address: '聊城市茌平区新政西路1163号',
dateTime: '13:12',
stopTime: 10,
pkgs: 100,
coordinate: '116.24271400,36.58568300',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '10',
batch: '1',
hospital: '高唐县中医院',
address: '高唐县东兴路16号',
dateTime: '13:52',
stopTime: 10,
pkgs: 100,
coordinate: '116.25357800,36.85772200',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '11',
batch: '1',
hospital: '高唐县人民医院',
address: '山东省高唐县金城西路99号',
dateTime: '14:17',
stopTime: 15,
pkgs: 100,
coordinate: '116.22798600,36.86687600',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '12',
batch: '1',
hospital: '聊城市茌平区第二人民医院',
address: '茌平县博平镇政府街',
dateTime: '15:04',
stopTime: 15,
pkgs: 100,
coordinate: '116.11760000,36.58789400',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '13',
batch: '1',
hospital: '聊城市茌平区洪官屯镇卫生院',
address: '聊城市茌平区洪官屯镇政府驻地',
dateTime: '15:47',
stopTime: 15,
pkgs: 100,
coordinate: '116.06041900,36.39670700',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '14',
batch: '1',
hospital: '聊城汽车总站对接点',
address: '聊城市东昌府区建设路与柳园北路交汇处西北角',
dateTime: '16:22',
stopTime: 8,
pkgs: 100,
coordinate: '115.98847500,36.47286500',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '15',
batch: '1',
hospital: '聊城市东昌府区妇幼保健院(两癌)',
address: '山东省聊城市东昌府区振兴西路129号',
dateTime: '16:40',
stopTime: 50,
pkgs: 100,
coordinate: '115.95710000,36.46834600',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '16',
batch: '1',
hospital: '聊城联络处(回)',
address: '山东省聊城市东昌府区',
dateTime: '17:43',
stopTime: 30,
pkgs: 100,
coordinate: '115.98849100,36.43464500',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
},
{
rowNo: '17',
batch: '1',
hospital: '聊城联络处对接点',
address: '山东省聊城市东昌府区',
dateTime: '18:18',
stopTime: 20,
pkgs: 100,
coordinate: '115.98849100,36.43464500',
isOrigin: 'N',
vehicleType: '1',
timeInterval: ''
}
]
}
]
}
},
methods: {
getSessionId() {
this.$store.dispatch('setTarget', JSON.stringify(this.checkeData))
let params = {
client_id: 'dd48c515fcde43bea0b5bd0b8f77e119',
grant_type: 'client_credentials',
client_secret: 'c6602114c9ba488b877d0d84b0e5e700',
scope: 'read'
}
getSession(params, {}).then(res => {
this.accessToken = res.access_token
// if (Array.isArray(this.targetData)) {
// this.initData([...this.departureData, ...this.targetData])
// } else {
// location.reload()
// this.initData([...this.departureData, ...this.targetData])
// }
this.initData([...JSON.parse(this.$store.state.app.depart), ...this.checkeData])
})
},
// 请求数据案例
initData(list) {
Toast.loading({
duration: 0
})
console.log('123', list)
let arr = _.cloneDeep(list)
const data = {
region: this.city,
plate: '',
departure: '',
arrival: '',
departureDate: '06:30',
customerData: arr
}
const params = {
method: 'GetRouteMatrix_test',
format: 'json',
sessionId: this.accessToken,
sign: '203EF639BA15A6E001B59DB78AB81470B7893CAF',
appKey: 'dd48c515fcde43bea0b5bd0b8f77e119',
v: '1.0'
}
getPlan(data, params)
.then(res => {
Toast.clear()
let newArr = JSON.parse(res).returnModel
console.log('返回的数据', newArr)
newArr.forEach(item => {
item.data.forEach((e, index) => {
e.distance = e.distance.toFixed(2)
e.hospital = e.returnName
e.status = '未去'
e.coordinate = e.destination
e.isOrigin = 'N'
if (index == item.data.length - 1) {
e.pkgs = 0
} else {
e.pkgs = 100
}
// e.distance.toFixed(2)
})
item.data.pop()
})
this.resultData = newArr
console.log('aaaaa', this.resultData)
let arrs = this.resultData
arrs.forEach((item, index) => {
item.rowNo = index + 1
})
this.$store.dispatch('setOrder', JSON.stringify(newArr))
this.$router.push({ path: '/result' })
})
.catch(() => {})
},
getDate() {
this.date = new Date()
},
// 即时规划
instantPlanning() {
if (!this.checkeData.length) {
Toast('请至少选择一条数据')
return
}
this.$store.dispatch('setTarget', JSON.stringify(this.checkeData))
this.$router.push({ path: '/about1' })
},
nextStep() {
if (!this.checkeData.length) {
Toast('请至少选择一条数据')
return
}
this.getSessionId()
},
// 下一个
nextOrder() {
console.log(this.orginData)
if (this.index == this.orginData.length - 1) {
Toast.fail('已经是最后一条')
return
}
this.index++
this.cloneData = _.cloneDeep(this.orginData[this.index])
this.currentData = _.cloneDeep(this.orginData[this.index])
if (this.index == 4) {
this.currentData.customerData = this.currentData.customerData.filter(item => item.batch == 1)
}
this.currentData.customerData.shift()
this.currentData.batch = '第一批'
this.currentData.arrival = this.cloneData.customerData.findLast(element => element.batch == '1').hospital
// this.currentData.departureDate = this.cloneData.customerData.findLast(element => element.batch == '1').dateTime
this.currentData.customerData.forEach((item, index) => (item.rowNo = index + 1))
this.$forceUpdate()
},
// 上一个
lastOrder() {
console.log(this.orginData)
if (this.index == 0) {
Toast.fail('已经是第一条')
return
}
this.index--
this.cloneData = _.cloneDeep(this.orginData[this.index])
this.currentData = _.cloneDeep(this.orginData[this.index])
if (this.index == 4) {
this.currentData.customerData = this.currentData.customerData.filter(item => item.batch == 1)
}
this.currentData.customerData.shift()
this.currentData.batch = '第一批'
this.currentData.arrival = this.cloneData.customerData.findLast(element => element.batch == '1').hospital
// this.currentData.departureDate = this.cloneData.customerData.findLast(element => element.batch == '1').dateTime
this.currentData.customerData.forEach((item, index) => (item.rowNo = index + 1))
this.$forceUpdate()
},
// 下一批
nextCargo() {
console.log(this.orginData[this.index].customerData)
if (this.index == 4) {
this.currentData.customerData = this.cloneData.customerData.filter(item => item.batch == 2)
this.currentData.departure = this.cloneData.customerData.findLast(element => element.batch == '1').hospital
this.currentData.departureDate = this.cloneData.customerData.findLast(element => element.batch == '1').dateTime
this.currentData.customerData.forEach((item, index) => (item.rowNo = index + 1))
this.currentData.batch = '第二批'
}
console.log(this.currentData.customerData)
},
// 上一批
lastCargo() {
if (this.index == 4) {
this.currentData.customerData = this.cloneData.customerData.filter(item => item.batch == 1)
this.currentData.arrival = this.cloneData.customerData.findLast(element => element.batch == '1').hospital
this.currentData.departureDate = this.cloneData.customerData[0].dateTime
this.currentData.customerData.forEach((item, index) => (item.rowNo = index + 1))
this.currentData.batch = '第一批'
}
}
},
watch: {
city: {
handler: function (val) {
switch (val) {
case '济南':
this.$store.dispatch('setCity', val)
this.currentData = this.TargetList[0]?.customerData
this.currentData.forEach((item, index) => (item.rowNo = index + 1))
break
case '德州':
this.$store.dispatch('setCity', val)
this.currentData = this.TargetList[1]?.customerData
this.currentData.forEach((item, index) => (item.rowNo = index + 1))
break
case '聊城':
this.$store.dispatch('setCity', val)
this.currentData = this.TargetList[2]?.customerData
this.currentData.forEach((item, index) => (item.rowNo = index + 1))
break
}
},
deep: true,
immediate: true
}
},
created() {
this.$bus.$on('selecte', e => (this.checkeData = e))
this.city = this.$store.state.app.city
this.departureData = this.$route.query.departureData
// this.orginData.forEach(item => item.customerData.forEach(item1 => (item1.status = '未去')))
// this.cloneData = _.cloneDeep(this.orginData[this.index])
// this.currentData = _.cloneDeep(this.orginData[this.index])
// this.currentData.batch = '第一批'
// this.currentData.customerData.shift()
// console.log('cloneData', this.cloneData)
// this.currentData.customerData.forEach((item, index) => (item.rowNo = index + 1))
// console.log(this.currentData.customerData)
// this.getDate()
},
destroyed() {
// 取消对bus事件的监听
// this.$bus.$off('selecte')
}
}
</script>
<style lang="scss" scoped>
.title {
padding: 10px;
}
.header-text {
font-size: 36px;
font-weight: 800;
}
.table-box {
margin: 12px 0px;
.th-row {
height: 56px;
line-height: 56px;
background: #ebf1f7;
padding: 0px 12px;
font-size: 36px;
}
.tb-row {
font-size: 48px;
height: 56px;
line-height: 56px;
padding: 0px 12px;
}
}
.fixed-bottom-right {
// position: absolute;
margin-top: 80px;
bottom: 20px;
right: 0px;
width: 100%;
}
</style>
<template>
<div class="app-container">
<van-nav-bar left-text="返回" left-arrow @click-left="onClickLeft" @click-right="onClickRight" />
<div class="layout-content">
<keep-alive v-if="$route.meta.keepAlive">
<router-view></router-view>
</keep-alive>
<router-view v-else></router-view>
</div>
<div class="layout-footer">
<!-- <div class="layout-footer">
<TabBar :data="tabbars" @change="handleChange" />
</div>
</div> -->
</div>
</template>
......@@ -42,7 +43,13 @@ export default {
methods: {
handleChange(v) {
console.log('tab value:', v)
}
},
onClickLeft() {
this.$router.go(-1)
},
onClickRight() {
Toast('按钮');
},
}
}
</script>
......
......@@ -53,18 +53,29 @@ module.exports = defineConfig({
warnings: false,
errors: true
}
},
headers: {
'Access-Control-Allow-Origin': '*'
},
proxy: {
//配置跨域
'/session': {
target: 'http://117.78.47.109:8180',
// ws:true,
changOrigin: true,
pathRewrite: {
'^/session': ''
}
},
'/apis': {
target: 'http://117.78.47.109:9081',
// ws:true,
changOrigin: true,
pathRewrite: {
'^/apis': ''
}
}
}
// proxy: {
// //配置跨域
// '/api': {
// target: "https://test.xxx.com",
// // ws:true,
// changOrigin:true,
// pathRewrite:{
// '^/api':'/'
// }
// }
// }
},
css: {
extract: IS_PROD, // 是否将组件中的 CSS 提取至一个独立的 CSS 文件中 (而不是动态注入到 JavaScript 中的 inline 代码)。
......
This diff could not be displayed because it is too large.
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!