5d96fd45 by xqz

提交

1 parent dc7a26fb
This diff could not be displayed because it is too large.
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
19 "vant": "^2.12.48", 19 "vant": "^2.12.48",
20 "vue": "^2.7.8", 20 "vue": "^2.7.8",
21 "vue-router": "^3.5.4", 21 "vue-router": "^3.5.4",
22 "vuedraggable": "^2.24.3",
22 "vuex": "^3.6.2" 23 "vuex": "^3.6.2"
23 }, 24 },
24 "devDependencies": { 25 "devDependencies": {
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
10 <link href="<%= htmlWebpackPlugin.options.cdn.css[i] %>" rel="preload" as="style" /> 10 <link href="<%= htmlWebpackPlugin.options.cdn.css[i] %>" rel="preload" as="style" />
11 <link href="<%= htmlWebpackPlugin.options.cdn.css[i] %>" rel="stylesheet" /> 11 <link href="<%= htmlWebpackPlugin.options.cdn.css[i] %>" rel="stylesheet" />
12 <% } %> --> 12 <% } %> -->
13 <title><%= webpackConfig.name %></title> 13 <title>demo</title>
14 </head> 14 </head>
15 <body> 15 <body>
16 <noscript> 16 <noscript>
......
1 const api = { 1 const api = {
2 Login: '/user/login', 2 Login: '/user/login',
3 UserInfo: '/user/userinfo', 3 UserInfo: '/user/userinfo',
4 UserName: '/user/name' 4 UserName: '/user/name',
5 plan: 'apis/api',
6 session: 'session/os/oauth/token'
5 } 7 }
6 8
7 export default api 9 export default api
......
...@@ -30,3 +30,35 @@ export function getUserName(params) { ...@@ -30,3 +30,35 @@ export function getUserName(params) {
30 hideloading: true 30 hideloading: true
31 }) 31 })
32 } 32 }
33
34 // 规划
35 export function getPlan(data, params) {
36 return request({
37 url: api.plan,
38 method: 'post',
39 data,
40 params,
41 hideloading: true
42 })
43 }
44 // 规划2
45 export function getPlan2(data, params) {
46 return request({
47 url: api.plan,
48 method: 'post',
49 data,
50 params,
51 hideloading: true
52 })
53 }
54
55 // 获取session
56 export function getSession(params, data) {
57 return request({
58 url: api.session,
59 method: 'post',
60 params,
61 data,
62 headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
63 })
64 }
......
...@@ -2,14 +2,14 @@ ...@@ -2,14 +2,14 @@
2 // 清除浮动 2 // 清除浮动
3 @mixin clearfix { 3 @mixin clearfix {
4 &:after { 4 &:after {
5 content: ""; 5 content: '';
6 display: table; 6 display: table;
7 clear: both; 7 clear: both;
8 } 8 }
9 } 9 }
10 10
11 // 多行隐藏 11 // 多行隐藏
12 @mixin textoverflow($clamp:1) { 12 @mixin textoverflow($clamp: 1) {
13 display: block; 13 display: block;
14 overflow: hidden; 14 overflow: hidden;
15 text-overflow: ellipsis; 15 text-overflow: ellipsis;
...@@ -19,9 +19,26 @@ ...@@ -19,9 +19,26 @@
19 /*! autoprefixer: ignore next */ 19 /*! autoprefixer: ignore next */
20 -webkit-box-orient: vertical; 20 -webkit-box-orient: vertical;
21 } 21 }
22 22 .city {
23 font-family: '微软雅黑';
24 background: rgba(0, 0, 0, 0);
25 width: 249px;
26 height: 60px;
27 font-size: 36px;
28 text-align: center;
29 border: 1px #1a1a1a solid;
30 border-radius: 5px;
31 }
32 .text-button {
33 border: none;
34 background-color: transparent;
35 color: #328985;
36 font-size: 24px;
37 text-decoration: underline;
38 cursor: pointer;
39 }
23 //flex box 40 //flex box
24 @mixin flexbox($jc:space-between, $ai:center, $fd:row, $fw:nowrap) { 41 @mixin flexbox($jc: space-between, $ai: center, $fd: row, $fw: nowrap) {
25 display: flex; 42 display: flex;
26 display: -webkit-flex; 43 display: -webkit-flex;
27 flex: 1; 44 flex: 1;
...@@ -34,3 +51,25 @@ ...@@ -34,3 +51,25 @@
34 flex-wrap: $fw; 51 flex-wrap: $fw;
35 -webkit-flex-wrap: $fw; 52 -webkit-flex-wrap: $fw;
36 } 53 }
54 /*定义滚动条高宽及背景
55 高宽分别对应横竖滚动条的尺寸*/
56 ::-webkit-scrollbar {
57 width: 16px;
58 height: 16px;
59 background-color: #f5f5f5;
60 z-index: 999;
61 }
62 /*定义滚动条轨道
63 内阴影+圆角*/
64 ::-webkit-scrollbar-track {
65 -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
66 border-radius: 10px;
67 background-color: #f5f5f5;
68 }
69 /*定义滑块
70 内阴影+圆角*/
71 ::-webkit-scrollbar-thumb {
72 border-radius: 10px;
73 -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
74 background-color: #555;
75 }
......
1 <template>
2 <div class="vant-table">
3 <table cellspacing="0" class="table" :style="{ width: width }">
4 <vuedraggable v-model="orginData" :options="{ draggable: this.vuedraggable }" @start="onStart" @end="onEnd">
5 <tr slot="header">
6 <th class="th" v-if="showCheck">
7 <input
8 type="checkbox"
9 id="j_cbAll"
10 :checked="isAllSelected"
11 @change="selectAllRows"
12 v-model="isAllSelected"
13 />
14 </th>
15 <th class="th" v-for="(item, index) in option.column" :key="index" :style="{ width: item.width }">
16 {{ item.label }}
17 </th>
18 </tr>
19 <tr
20 v-for="item in orginData"
21 :key="item.rowNo"
22 class="list-tr"
23 @click="handleRowClick(item)"
24 :class="{ 'selected-row': item.isClick }"
25 >
26 <td v-if="showCheck">
27 <input type="checkbox" :checked="item.isSelected" v-model="item.isSelected" @change="selectRow(item)" />
28 </td>
29 <td
30 v-for="(context, i) in option.column"
31 :key="i"
32 :style="[
33 item[context.tableDataprop] === '已去' ? { color: 'green' } : {},
34 item.type === 'new' ? { color: 'red' } : {},
35 { textAlign: context.align },
36 { width: context.width }
37 ]"
38 >
39 <slot :name="context.tableDataprop" :item="item"> <span v-html="item[context.tableDataprop]"></span></slot>
40 <!-- <slot :name="opreate" :item="item"></slot> -->
41 </td>
42 </tr>
43 </vuedraggable>
44 </table>
45 <div style="margin: 15px 15px"></div>
46 </div>
47 </template>
48 <script>
49 import vuedraggable from 'vuedraggable'
50 import _ from 'lodash'
51 export default {
52 name: 'TableVant',
53 components: { vuedraggable },
54 props: {
55 bgcolor: {
56 type: Object
57 },
58 width: {
59 type: String
60 },
61 tableData: {
62 type: Array
63 },
64 filterTable: {
65 type: Array
66 },
67 delTable: {
68 type: Array
69 },
70 option: {
71 type: Object
72 },
73 showCheck: {
74 type: Boolean,
75 default: false
76 },
77 vuedraggable: {
78 type: String
79 },
80 rowClick: {
81 type: Boolean,
82 default: false
83 }
84 },
85 watch: {
86 tableData: {
87 handler: function () {
88 this.orginData = _.cloneDeep(this.tableData) || []
89 },
90 deep: true,
91 immediate: true
92 },
93 filterTable: {
94 handler: function () {
95 this.filterData = _.cloneDeep(this.filterTable) || []
96 this.filterFlag = this.filterData.length > 0 ? true : false
97 },
98 deep: true,
99 immediate: true
100 },
101 delTable: {
102 handler: function () {
103 this.delData = _.cloneDeep(this.delTable) || []
104 this.deleteFlag = this.delData.length > 0 ? true : false
105 },
106 deep: true,
107 immediate: true
108 }
109 },
110 data() {
111 return {
112 orginData: [],
113 filterData: [],
114 delData: [],
115 filterFlag: false,
116 deleteFlag: false,
117 isAllSelected: false,
118 selectedRows: []
119 }
120 },
121 created() {},
122 mounted() {},
123 methods: {
124 onStart() {
125 this.drag = true
126 console.log('1', this.orginData)
127 },
128 handleRowClick(data) {
129 if (this.rowClick) {
130 this.orginData = this.orginData.map(item => {
131 item.isClick = false
132 return item
133 })
134 this.$set(data, 'isClick', true)
135 this.$bus.$emit('rowData', data)
136 }
137 },
138 onEnd() {
139 this.drag = false
140 console.log('2', this.orginData)
141 this.$bus.$emit('sortTableData', this.orginData)
142 },
143 selectAllRows() {
144 if (this.isAllSelected) {
145 this.selectedRows = [...this.orginData]
146 this.orginData.forEach(item => {
147 this.$set(item, 'isSelected', true)
148 })
149 } else {
150 this.selectedRows = []
151 this.orginData.forEach(item => {
152 this.$set(item, 'isSelected', false)
153 })
154 }
155 this.selectedRows = this.isAllSelected ? this.orginData : []
156 this.$bus.$emit('selecte', this.selectedRows)
157 console.log(this.selectedRows)
158 },
159 selectRow() {
160 this.selectedRows = this.orginData.filter(row => row.isSelected)
161 this.isAllSelected = this.selectedRows.length === this.orginData.length
162 this.$bus.$emit('selecte', this.selectedRows)
163 console.log(this.selectedRows)
164 }
165 }
166 }
167 </script>
168
169 <style scoped>
170 .selected-row {
171 background-color: yellow;
172 }
173 .vant-table {
174 margin-top: 20px;
175 }
176
177 table {
178 border-radius: 0.185185rem;
179 border-collapse: collapse;
180 /* 合并边框,美化表格样式 */
181 table-layout: fixed;
182 table-layout: fixed;
183 width: 100%;
184 }
185
186 .table {
187 border-radius: 0.185185rem;
188 border-collapse: collapse;
189 /* 合并边框,美化表格样式 */
190 table-layout: fixed;
191 display: flex;
192 table-layout: fixed;
193 word-wrap: break-word;
194 word-break: break-all;
195 }
196
197 th,
198 td {
199 border: 1px solid black;
200 /* 添加边框,美化表格样式 */
201 padding: 1px;
202 /* 添加内边距,使内容与边框有一定距离 */
203 }
204
205 .th {
206 height: 1.074074rem;
207 line-height: 1.074074rem;
208 background-color: #328985;
209 color: white;
210 text-align: center;
211 font-size: 24px;
212 }
213
214 td {
215 white-space: pre-wrap;
216 }
217
218 table tr {
219 margin-bottom: 10px;
220 /* 调整间距大小 */
221 }
222
223 .filter-tr,
224 .list-tr {
225 height: 1.074074rem;
226 line-height: 1.074074rem;
227 font-size: 24px;
228 }
229
230 .filter-tr:last-child {
231 margin-bottom: 10px;
232 }
233
234 tr > td:nth-child(1) {
235 text-align: center;
236 }
237
238 .del-text {
239 font-size: 24px;
240 font-weight: bold;
241 }
242 </style>
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
2 module.exports = { 2 module.exports = {
3 title: 'vue-h5-template', 3 title: 'vue-h5-template',
4 baseUrl: 'http://localhost:9018', // 项目地址 4 baseUrl: 'http://localhost:9018', // 项目地址
5 baseApi: 'https://test.xxx.com/api', // 本地api请求地址,注意:如果你使用了代理,请设置成'/' 5 baseApi: '/', // 本地api请求地址,注意:如果你使用了代理,请设置成'/'
6 APPID: 'xxx', 6 APPID: 'xxx',
7 APPSECRET: 'xxx', 7 APPSECRET: 'xxx',
8 $cdn: 'https://www.sunniejs.cn/static' 8 $cdn: 'https://www.sunniejs.cn/static'
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
2 module.exports = { 2 module.exports = {
3 title: 'vue-h5-template', 3 title: 'vue-h5-template',
4 baseUrl: 'https://www.xxx.com/', // 正式项目地址 4 baseUrl: 'https://www.xxx.com/', // 正式项目地址
5 baseApi: 'https://www.xxx.com/api', // 正式api请求地址 5 baseApi: 'https://tsapi.amap.com', // 正式api请求地址
6 APPID: 'xxx', 6 APPID: 'xxx',
7 APPSECRET: 'xxx', 7 APPSECRET: 'xxx',
8 $cdn: 'https://www.sunniejs.cn/static' 8 $cdn: 'https://www.sunniejs.cn/static'
......
1 module.exports = { 1 module.exports = {
2 title: 'vue-h5-template', 2 title: 'vue-h5-template',
3 baseUrl: 'https://test.xxx.com', // 测试项目地址 3 baseUrl: 'https://test.xxx.com', // 测试项目地址
4 baseApi: 'https://test.xxx.com/api', // 测试api请求地址 4 baseApi: 'https://tsapi.amap.com', // 测试api请求地址
5 APPID: 'xxx', 5 APPID: 'xxx',
6 APPSECRET: 'xxx', 6 APPSECRET: 'xxx',
7 $cdn: 'https://www.sunniejs.cn/static' 7 $cdn: 'https://www.sunniejs.cn/static'
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
2 *格式化时间 2 *格式化时间
3 *yyyy-MM-dd hh:mm:ss 3 *yyyy-MM-dd hh:mm:ss
4 */ 4 */
5 export function formatDate(time, fmt) { 5 export function formatDate(time, fmt = 'yyyy-MM-dd') {
6 if (time === undefined || '') { 6 if (time === undefined || '') {
7 return 7 return
8 } 8 }
......
...@@ -2,12 +2,13 @@ ...@@ -2,12 +2,13 @@
2 // https://github.com/zloirock/core-js/blob/master/docs/2019-03-19-core-js-3-babel-and-a-look-into-the-future.md#babelpolyfill 2 // https://github.com/zloirock/core-js/blob/master/docs/2019-03-19-core-js-3-babel-and-a-look-into-the-future.md#babelpolyfill
3 import 'core-js/stable' 3 import 'core-js/stable'
4 import 'regenerator-runtime/runtime' 4 import 'regenerator-runtime/runtime'
5
6 import Vue from 'vue' 5 import Vue from 'vue'
7 import App from './App.vue' 6 import App from './App.vue'
8 import router from './router' 7 import router from './router'
9 import store from './store' 8 import store from './store'
9 import Bus from '../src/utils/bus' //这是我的路径,正确引用你们的路径
10 10
11 Vue.prototype.$bus = Bus
11 // 设置 js中可以访问 $cdn 12 // 设置 js中可以访问 $cdn
12 import { $cdn } from '@/config' 13 import { $cdn } from '@/config'
13 Vue.prototype.$cdn = $cdn 14 Vue.prototype.$cdn = $cdn
......
1 // 按需全局引入 vant组件 1 // 按需全局引入 vant组件
2 import Vue from 'vue' 2 import Vue from 'vue'
3 import { Button, List, Cell, Tabbar, TabbarItem } from 'vant' 3 import {
4 Button,
5 List,
6 Cell,
7 Tabbar,
8 TabbarItem,
9 Col,
10 Row,
11 Divider,
12 NavBar,
13 Toast,
14 Field,
15 DatetimePicker,
16 Dialog,
17 CellGroup
18 } from 'vant'
4 Vue.use(Button) 19 Vue.use(Button)
5 Vue.use(Cell) 20 Vue.use(Cell)
6 Vue.use(List) 21 Vue.use(List)
7 Vue.use(Tabbar).use(TabbarItem) 22 Vue.use(Tabbar)
23 .use(TabbarItem)
24 .use(Col)
25 .use(Row)
26 .use(Divider)
27 .use(NavBar)
28 .use(Toast)
29 .use(Field)
30 .use(DatetimePicker)
31 .use(Dialog)
32 .use(CellGroup)
......
...@@ -6,7 +6,7 @@ export const constantRouterMap = [ ...@@ -6,7 +6,7 @@ export const constantRouterMap = [
6 { 6 {
7 path: '/', 7 path: '/',
8 component: () => import('@/views/layouts/index'), 8 component: () => import('@/views/layouts/index'),
9 redirect: '/home', 9 redirect: '/departure',
10 meta: { 10 meta: {
11 title: '首页', 11 title: '首页',
12 keepAlive: false 12 keepAlive: false
...@@ -23,6 +23,30 @@ export const constantRouterMap = [ ...@@ -23,6 +23,30 @@ export const constantRouterMap = [
23 name: 'About', 23 name: 'About',
24 component: () => import('@/views/home/about'), 24 component: () => import('@/views/home/about'),
25 meta: { title: '关于我', keepAlive: false } 25 meta: { title: '关于我', keepAlive: false }
26 },
27 {
28 path: '/departure',
29 name: 'Departure',
30 component: () => import('@/views/home/departure'),
31 meta: { title: '出发列表', keepAlive: false }
32 },
33 {
34 path: '/result',
35 name: 'Result',
36 component: () => import('@/views/home/result'),
37 meta: { title: '规划结果', keepAlive: false }
38 },
39 {
40 path: '/target',
41 name: 'Target',
42 component: () => import('@/views/home/target'),
43 meta: { title: '目的列表', keepAlive: false }
44 },
45 {
46 path: '/about1',
47 name: 'About1',
48 component: () => import('@/views/home/about1'),
49 meta: { title: '关于我', keepAlive: false }
26 } 50 }
27 ] 51 ]
28 } 52 }
......
1 const getters = { 1 const getters = {
2 userName: state => state.app.userName 2 getOrder: function (state) {
3 if (!state.order) {
4 state.order = JSON.parse(localStorage.getItem('order'))
5 }
6 return state.order
7 },
8 getCity: function (state) {
9 if (!state.city) {
10 state.city = localStorage.getItem('city')
11 }
12 return state.order
13 },
14 getdepart: function (state) {
15 if (!state.depart) {
16 state.depart = JSON.parse(localStorage.getItem('depart'))
17 }
18 return state.depart
19 },
20 getTarget: function (state) {
21 if (!state.target) {
22 state.target = JSON.parse(localStorage.getItem('target'))
23 }
24 return state.target
25 },
26 getCurentData: function (state) {
27 if (!state.curentData) {
28 state.curentData = JSON.parse(localStorage.getItem('curentData'))
29 }
30 return state.curentData
31 }
3 } 32 }
4 export default getters 33 export default getters
......
1 const state = { 1 const state = {
2 userName: '' 2 order: localStorage.getItem('order') ? localStorage.getItem('order') : '',
3 city: localStorage.getItem('city') ? localStorage.getItem('city') : '',
4 depart: localStorage.getItem('depart') ? localStorage.getItem('depart') : '',
5 target: localStorage.getItem('target') ? localStorage.getItem('target') : '',
6 curentData: localStorage.getItem('curentData') ? localStorage.getItem('curentData') : ''
3 } 7 }
4 const mutations = { 8 const mutations = {
5 SET_USER_NAME(state, name) { 9 SET_ORDER(state, info) {
6 state.userName = name 10 state.order = info
11 localStorage.setItem('order', info)
12 },
13 SET_CITY(state, info) {
14 state.city = info
15 localStorage.setItem('city', info)
16 },
17 SET_DEPART(state, info) {
18 state.depart = info
19 localStorage.setItem('depart', info)
20 },
21 SET_TARGET(state, info) {
22 state.target = info
23 localStorage.setItem('target', info)
24 },
25 SET_CURENTDATA(state, info) {
26 state.target = info
27 localStorage.setItem('curentData', info)
7 } 28 }
8 } 29 }
9 const actions = { 30 const actions = {
10 // 设置name 31 // 设置name
11 setUserName({ commit }, name) { 32 setOrder({ commit }, info) {
12 commit('SET_USER_NAME', name) 33 commit('SET_ORDER', info)
34 },
35 // 设置城市
36 setCity({ commit }, info) {
37 commit('SET_CITY', info)
38 },
39 // 设置城市
40 setDepart({ commit }, info) {
41 commit('SET_DEPART', info)
42 },
43 // 设置城市
44 setTarget({ commit }, info) {
45 commit('SET_TARGET', info)
46 },
47 // 设置城市
48 setCurentData({ commit }, info) {
49 commit('SET_CURENTDATA', info)
13 } 50 }
14 } 51 }
15 export default { 52 export default {
......
1 // bus.js文件内容
2 import Vue from 'vue'
3 // export default new Vue()
4 const Bus = new Vue()
5 export default Bus
...@@ -6,8 +6,8 @@ import { baseApi } from '@/config' ...@@ -6,8 +6,8 @@ import { baseApi } from '@/config'
6 // create an axios instance 6 // create an axios instance
7 const service = axios.create({ 7 const service = axios.create({
8 baseURL: baseApi, // url = base api url + request url 8 baseURL: baseApi, // url = base api url + request url
9 withCredentials: true, // send cookies when cross-domain requests 9 withCredentials: true // send cookies when cross-domain requests
10 timeout: 5000 // request timeout 10 // timeout: 5000 // request timeout
11 }) 11 })
12 12
13 // request拦截器 request interceptor 13 // request拦截器 request interceptor
...@@ -34,8 +34,8 @@ service.interceptors.request.use( ...@@ -34,8 +34,8 @@ service.interceptors.request.use(
34 // respone拦截器 34 // respone拦截器
35 service.interceptors.response.use( 35 service.interceptors.response.use(
36 response => { 36 response => {
37 Toast.clear()
38 const res = response.data 37 const res = response.data
38 Toast.clear()
39 if (res.status && res.status !== 200) { 39 if (res.status && res.status !== 200) {
40 // 登录超时,重新登录 40 // 登录超时,重新登录
41 if (res.status === 401) { 41 if (res.status === 401) {
......
1 <template> 1 <template>
2 <div class="about-container"> 2 <div>
3 <div class="warpper"> 3 <div class="title">
4 <div class="list"> 4 <van-row type="flex" justify="space-between">
5 <div class="logo"></div> 5 <van-col span="8" class="header-text">业务员:{{ currentData.name }}</van-col>
6 <div class="demo-home__title">VUE H5开发模板</div> 6 <van-col span="8" class="header-text">车牌号:{{ currentData.plate }}</van-col>
7 <div class="item"> 7 <van-col span="8" class="header-text">批次:{{ currentData.batch }}</van-col>
8 项目地址: 8 </van-row>
9 <a href="https://github.com/sunniejs/vue-h5-template">https://github.com/sunniejs/vue-h5-template</a> 9 <van-row type="flex" style="margin-top: 15px">
10 <van-col span="8">
11 <div class="header-text">出发地:{{ currentData.departure }}</div>
12 </van-col>
13 <van-col span="8">
14 <div class="header-text">目的地:{{ currentData.arrival }}</div>
15 </van-col>
16 <van-col span="8">
17 <div class="header-text" style="display: flex">
18 出发时间:<van-field v-model="currentData.departureDate" size="small" placeholder="请输入时间" />
10 </div> 19 </div>
11 <div class="item">项目作者: sunnie</div> 20 </van-col>
12 <div class="item"></div> 21 </van-row>
13 <div class="wechat">
14 <img :src="this.wechat" alt="" />
15 </div> 22 </div>
16 <div class="item">关注公众号:回复“加群”即可加 前端仙女群</div> 23 <div>
17 <div class="item"> 24 <Table-vant :option="option1" :tableData="filterTable" v-if="filterTable.length > 0"></Table-vant>
18 {{ userName }} 25 <div style="width: 100%; overflow-x: auto">
19 <van-button v-if="userName == ''" type="warning" size="small" @click="doDispatch">快点我~</van-button> 26 <Table-vant :option="option" :tableData="dataList" width="790px"></Table-vant>
20 </div> 27 </div>
28 <div style="font-size: 16px; font-weight: bold; margin-top: 20px" v-if="deleteData.length > 0">
29 从原安排中移除的任务
30 </div>
31 <Table-vant :option="option2" :tableData="deleteData" v-if="deleteData.length > 0"></Table-vant>
32 </div>
33
34 <div class="fixed-bottom-right">
35 <div style="display: flex; justify-content: space-between; margin-top: 10px">
36 <van-button round plain type="primary" @click="simulatedSampling">模拟取样</van-button>
37 <van-button round plain type="info" @click="insertSheet1">模拟插单1</van-button>
38 <van-button round plain type="primary" @click="insertSheet2">模拟插单2</van-button>
39 </div>
40 <div style="display: flex; justify-content: space-between; margin-top: 10px">
41 <van-button round plain type="info" @click="replanning">重新规划</van-button>
42 <van-button round plain type="info" @click="replanning2">调整后规划</van-button>
43 <van-button round plain type="info" @click="EnableNavigation">开启导航</van-button>
21 </div> 44 </div>
22 </div> 45 </div>
23 </div> 46 </div>
...@@ -25,89 +48,926 @@ ...@@ -25,89 +48,926 @@
25 48
26 <script> 49 <script>
27 // 请求接口 50 // 请求接口
28 import { getUserInfo } from '@/api/user.js' 51 import { getPlan, getSession, getPlan2 } from '@/api/user.js'
29 import { mapGetters } from 'vuex' 52 import TableVant from '@/components/Table.vue'
53 import { Toast } from 'vant'
54 import _ from 'lodash'
55
30 export default { 56 export default {
57 components: { TableVant },
58
31 data() { 59 data() {
32 return { 60 return {
33 wechat: `${this.$cdn}/wx/640.gif` 61 currentData: [],
62 sortTable: [],
63 dataList: [],
64 date: '',
65 start: '',
66 firstObj: {},
67 filterTable: [],
68 deleteData: [],
69 accessToken: '',
70 originData: [],
71 option: {
72 column: [
73 {
74 label: '序号',
75 tableDataprop: 'rowNo',
76 width: '50px'
77 },
78 {
79 label: '途经',
80 tableDataprop: 'hospital',
81 width: '230px'
82 },
83 {
84 label: '取样数',
85 tableDataprop: 'pkgs',
86 width: '50px',
87 align: 'right'
88 },
89 {
90 label: '里程(km)',
91 tableDataprop: 'distance',
92 width: '80px',
93 align: 'right'
94 },
95 {
96 label: '路程耗时(分钟)',
97 tableDataprop: 'duration',
98 width: '90px',
99 align: 'right'
100 },
101 {
102 label: '停留时长(分钟)',
103 tableDataprop: 'stopTime',
104 width: '90px',
105 align: 'right'
106 },
107 {
108 label: '预计到达时间',
109 tableDataprop: 'reachDate',
110 width: '90px',
111 align: 'right'
112 },
113 {
114 label: '预计离开时间',
115 tableDataprop: 'leaveDate',
116 width: '90px',
117 align: 'right'
118 },
119 {
120 label: '状态',
121 tableDataprop: 'status',
122 width: '50px'
123 }
124 ]
125 },
126 option1: {
127 column: [
128 {
129 label: '序号',
130 tableDataprop: 'rowNo',
131 width: '50px'
132 },
133 {
134 label: '途经',
135 tableDataprop: 'hospital',
136 width: '230px'
137 },
138 // {
139 // label: '取样时间',
140 // tableDataprop: 'dateTime',
141 // width: '50px'
142 // },
143 {
144 label: '取样数',
145 tableDataprop: 'pkgs',
146 width: '50px',
147 align: 'right'
148 },
149 {
150 label: '状态',
151 tableDataprop: 'status',
152 width: '50px'
153 }
154 ]
155 },
156 option2: {
157 column: [
158 {
159 label: '序号',
160 tableDataprop: 'rowNo',
161 width: '50px'
162 },
163 {
164 label: '途经',
165 tableDataprop: 'hospital',
166 width: '230px'
167 },
168 // {
169 // label: '取样时间',
170 // tableDataprop: 'dateTime'
171 // },
172 {
173 label: '取样数',
174 tableDataprop: 'pkgs',
175 width: '50px',
176 align: 'right'
177 },
178 {
179 label: '状态',
180 tableDataprop: 'status',
181 width: '50px'
182 }
183 ]
184 }
34 } 185 }
35 }, 186 },
36 computed: { 187 computed: {
37 ...mapGetters(['userName']) 188 // ...mapGetters(['order'])
38 }, 189 },
39 mounted() { 190 mounted() {
40 this.initData() 191 this.getSessionId()
192 this.getDate()
193 },
194 created() {
195 this.$bus.$on('sortTableData', e => (this.dataList = e))
196 this.currentData = JSON.parse(this.$store.state.app.order)
197 this.firstObj = this.currentData.customerData[0]
198 this.originData = _.cloneDeep(this.currentData.customerData)
199 this.currentData.customerData.shift()
200 this.dataList = this.currentData.customerData
201 let arr = [...this.filterTable, ...this.dataList]
202 arr.forEach((item, index) => {
203 item.rowNo = index + 1
204 // this.filterTable[index].rowNo = index
205 // this.dataList[index].rowNo = index
206 })
41 }, 207 },
42 methods: { 208 methods: {
209 getDate() {
210 this.date = new Date()
211 },
212 isnavigation(val) {
213 let that = this
214 let myLocation = JSON.parse(sessionStorage.getItem('ownChooseLocation'))
215 if (this.cabinData.longitude && this.cabinData.latitude) {
216 let Url = ''
217 switch (val) {
218 case 'amap':
219 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`
220 break
221 case 'bmap':
222 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`
223 break
224 }
225 location.href = Url
226 } else {
227 // this.$message({
228 // message: '请先确认您的起点和终点位置',
229 // type: 'warning',
230 // })
231 }
232 },
43 // 请求数据案例 233 // 请求数据案例
44 initData() { 234 initData(list) {
235 Toast.loading({
236 duration: 0
237 })
238 // let destinations = arr.map(item => item.coordinate).join(';')
45 // 请求接口数据,仅作为展示,需要配置src->config下环境文件 239 // 请求接口数据,仅作为展示,需要配置src->config下环境文件
46 const params = { user: 'sunnie' } 240 console.log('123', list)
47 getUserInfo(params) 241 // return
48 .then(() => {}) 242 let arr = _.cloneDeep(list)
243 arr.forEach((item, index) => {
244 // if (item.dateTime1) {
245 // item.dateTime = item.dateTime1
246 // }
247 item.rowNo = index + 1
248 return item
249 })
250 const data = {
251 name: this.currentData.name,
252 plate: this.currentData.plate,
253 batch: '第一批',
254 departure: this.currentData.departure,
255 arrival: this.currentData.arrival,
256 departureDate: this.currentData.departureDate,
257 customerData: arr
258 }
259
260 const params = {
261 method: 'GetRouteMatrix_test',
262 format: 'json',
263 sessionId: this.accessToken,
264 sign: '203EF639BA15A6E001B59DB78AB81470B7893CAF',
265 appKey: 'dd48c515fcde43bea0b5bd0b8f77e119',
266 v: '1.0'
267 }
268 getPlan(data, params)
269 .then(res => {
270 Toast.clear()
271 let newArr = JSON.parse(res).data
272 console.log('返回的数据', newArr)
273 // if (!this.filterTable.length) {
274 // newArr.shift()
275 // }
276 newArr.shift()
277 console.log(arr)
278 let sortedArray = newArr.map(item1 =>
279 arr.find(item2 => {
280 if (item2.hospital + item2.dateTime == item1.returnName) {
281 item2.distance = item1.distance.toFixed(2)
282 item2.duration = item1.duration
283 item2.stopTime = item1.stopTime
284 item2.reachDate = item1.reachDate
285 item2.leaveDate = item1.leaveDate
286 // item2.dateTime1 = _.cloneDeep(item2.dateTime)
287 // item2.dateTime = item1.timeSlot.replace('-', '<br/>')
288 return item2
289 }
290 })
291 )
292 this.dataList = sortedArray
293 console.log('aaaaa', sortedArray)
294
295 let arrs = [...this.filterTable, ...this.dataList]
296 arrs.forEach((item, index) => {
297 item.rowNo = index + 1
298 // this.filterTable[index].rowNo = index
299 // this.dataList[index].rowNo = index
300 })
301 })
302 .catch(() => {})
303 // this.$nextTick(() => {
304 // let result = {
305 // errcode: '10000',
306 // errmsg: 'OK',
307 // errdetail: null,
308 // data: [
309 // {
310 // number: 0,
311 // origin: '117.13394400,36.67904500',
312 // destination: '117.13394400,36.67904500',
313 // code: 0,
314 // distance: 6748,
315 // duration: 2160,
316 // toll: 0,
317 // restriction: 0
318 // },
319 // {
320 // number: 0,
321 // origin: '117.13394400,36.67904500',
322 // destination: '117.08718600,36.65631700',
323 // code: 0,
324 // distance: 6748,
325 // duration: 2160,
326 // toll: 0,
327 // restriction: 0
328 // },
329 // {
330 // number: 1,
331 // origin: '117.08718600,36.65631700',
332 // destination: '117.01788200,36.64911300',
333 // code: 0,
334 // distance: 6584,
335 // duration: 1560,
336 // toll: 0,
337 // restriction: 0
338 // },
339 // {
340 // number: 2,
341 // origin: '117.01788200,36.64911300',
342 // destination: '117.03081400,36.65417800',
343 // code: 0,
344 // distance: 2509,
345 // duration: 960,
346 // toll: 0,
347 // restriction: 0
348 // },
349 // {
350 // number: 3,
351 // origin: '117.03081400,36.65417800',
352 // destination: '117.04783900,36.64556100',
353 // code: 0,
354 // distance: 2891,
355 // duration: 900,
356 // toll: 0,
357 // restriction: 0
358 // },
359 // {
360 // number: 4,
361 // origin: '117.04783900,36.64556100',
362 // destination: '116.96255900,36.63623600',
363 // code: 0,
364 // distance: 12334,
365 // duration: 3480,
366 // toll: 0,
367 // restriction: 0
368 // },
369 // {
370 // number: 5,
371 // origin: '116.96255900,36.63623600',
372 // destination: '116.95988200,36.62819100',
373 // code: 0,
374 // distance: 1972,
375 // duration: 600,
376 // toll: 0,
377 // restriction: 0
378 // },
379 // {
380 // number: 6,
381 // origin: '116.95988200,36.62819100',
382 // destination: '116.92826100,36.65210900',
383 // code: 0,
384 // distance: 7447,
385 // duration: 1380,
386 // toll: 0,
387 // restriction: 0
388 // },
389 // {
390 // number: 8,
391 // origin: '116.89177900,36.66887900',
392 // destination: '116.91937000,36.72000800',
393 // code: 0,
394 // distance: 9551,
395 // duration: 1740,
396 // toll: 0,
397 // restriction: 0
398 // }
399 // ]
400 // }
401
402 // let newArr = result.data
403 // console.log('返回的数据', newArr)
404 // console.log(arr)
405 // // newArr.unshift(this.currentData.customerData[0])
406 // let sortedArray = newArr.map(item1 => arr.find(item2 => item2.coordinate === item1.destination))
407 // // sortedArray.unshift(arr[0])
408 // this.dataList = sortedArray
409 // console.log('aaaaa', sortedArray)
410 // let arrs = [...this.filterTable, ...this.dataList]
411 // arrs.forEach((item, index) => {
412 // item.rowNo = index + 1
413 // // this.filterTable[index].rowNo = index
414 // // this.dataList[index].rowNo = index
415 // })
416 // })
417 },
418 initData2(list) {
419 Toast.loading({
420 duration: 0
421 })
422 // let destinations = arr.map(item => item.coordinate).join(';')
423 // 请求接口数据,仅作为展示,需要配置src->config下环境文件
424 console.log('123', list)
425 // return
426 let arr = _.cloneDeep(list)
427 arr.forEach((item, index) => {
428 // if (item.dateTime1) {
429 // item.dateTime = item.dateTime1
430 // }
431 item.rowNo = index + 1
432 return item
433 })
434 const data = {
435 name: this.currentData.name,
436 plate: this.currentData.plate,
437 batch: '第一批',
438 departure: this.currentData.departure,
439 arrival: this.currentData.arrival,
440 departureDate: this.currentData.departureDate,
441 customerData: arr
442 }
443
444 const params = {
445 method: 'GetRoutePlan_test1',
446 format: 'json',
447 sessionId: this.accessToken,
448 sign: '203EF639BA15A6E001B59DB78AB81470B7893CAF',
449 appKey: 'dd48c515fcde43bea0b5bd0b8f77e119',
450 v: '1.0'
451 }
452 getPlan2(data, params)
453 .then(res => {
454 Toast.clear()
455 let newArr = JSON.parse(res).data
456 console.log('返回的数据', newArr)
457 // if (!this.filterTable.length) {
458 // newArr.shift()
459 // }
460 newArr.shift()
461 console.log(arr)
462 let sortedArray = newArr.map(item1 =>
463 arr.find(item2 => {
464 if (item2.hospital + item2.dateTime == item1.returnName) {
465 item2.distance = item1.distance.toFixed(2)
466 item2.duration = item1.duration
467 item2.stopTime = item1.stopTime
468 item2.reachDate = item1.reachDate
469 item2.leaveDate = item1.leaveDate
470 return item2
471 }
472 })
473 )
474 this.dataList = sortedArray
475 console.log('aaaaa', sortedArray)
476
477 let arrs = [...this.filterTable, ...this.dataList]
478 arrs.forEach((item, index) => {
479 item.rowNo = index + 1
480 // this.filterTable[index].rowNo = index
481 // this.dataList[index].rowNo = index
482 })
483 })
49 .catch(() => {}) 484 .catch(() => {})
485 // this.$nextTick(() => {
486 // let result = {
487 // errcode: '10000',
488 // errmsg: 'OK',
489 // errdetail: null,
490 // data: [
491 // {
492 // number: 0,
493 // origin: '117.13394400,36.67904500',
494 // destination: '117.13394400,36.67904500',
495 // code: 0,
496 // distance: 6748,
497 // duration: 2160,
498 // toll: 0,
499 // restriction: 0
500 // },
501 // {
502 // number: 0,
503 // origin: '117.13394400,36.67904500',
504 // destination: '117.08718600,36.65631700',
505 // code: 0,
506 // distance: 6748,
507 // duration: 2160,
508 // toll: 0,
509 // restriction: 0
510 // },
511 // {
512 // number: 1,
513 // origin: '117.08718600,36.65631700',
514 // destination: '117.01788200,36.64911300',
515 // code: 0,
516 // distance: 6584,
517 // duration: 1560,
518 // toll: 0,
519 // restriction: 0
520 // },
521 // {
522 // number: 2,
523 // origin: '117.01788200,36.64911300',
524 // destination: '117.03081400,36.65417800',
525 // code: 0,
526 // distance: 2509,
527 // duration: 960,
528 // toll: 0,
529 // restriction: 0
530 // },
531 // {
532 // number: 3,
533 // origin: '117.03081400,36.65417800',
534 // destination: '117.04783900,36.64556100',
535 // code: 0,
536 // distance: 2891,
537 // duration: 900,
538 // toll: 0,
539 // restriction: 0
540 // },
541 // {
542 // number: 4,
543 // origin: '117.04783900,36.64556100',
544 // destination: '116.96255900,36.63623600',
545 // code: 0,
546 // distance: 12334,
547 // duration: 3480,
548 // toll: 0,
549 // restriction: 0
550 // },
551 // {
552 // number: 5,
553 // origin: '116.96255900,36.63623600',
554 // destination: '116.95988200,36.62819100',
555 // code: 0,
556 // distance: 1972,
557 // duration: 600,
558 // toll: 0,
559 // restriction: 0
560 // },
561 // {
562 // number: 6,
563 // origin: '116.95988200,36.62819100',
564 // destination: '116.92826100,36.65210900',
565 // code: 0,
566 // distance: 7447,
567 // duration: 1380,
568 // toll: 0,
569 // restriction: 0
570 // },
571 // {
572 // number: 8,
573 // origin: '116.89177900,36.66887900',
574 // destination: '116.91937000,36.72000800',
575 // code: 0,
576 // distance: 9551,
577 // duration: 1740,
578 // toll: 0,
579 // restriction: 0
580 // }
581 // ]
582 // }
583
584 // let newArr = result.data
585 // console.log('返回的数据', newArr)
586 // console.log(arr)
587 // // newArr.unshift(this.currentData.customerData[0])
588 // let sortedArray = newArr.map(item1 => arr.find(item2 => item2.coordinate === item1.destination))
589 // // sortedArray.unshift(arr[0])
590 // this.dataList = sortedArray
591 // console.log('aaaaa', sortedArray)
592 // let arrs = [...this.filterTable, ...this.dataList]
593 // arrs.forEach((item, index) => {
594 // item.rowNo = index + 1
595 // // this.filterTable[index].rowNo = index
596 // // this.dataList[index].rowNo = index
597 // })
598 // })
50 }, 599 },
51 // Action 通过 store.dispatch 方法触发 600 getSessionId() {
52 doDispatch() { 601 let params = {
53 this.$store.dispatch('setUserName', '真乖,赶紧关注公众号,组织都在等你~') 602 client_id: 'dd48c515fcde43bea0b5bd0b8f77e119',
603 grant_type: 'client_credentials',
604 client_secret: 'c6602114c9ba488b877d0d84b0e5e700',
605 scope: 'read'
606 }
607 getSession(params, {}).then(res => {
608 this.accessToken = res.access_token
609 // this.initData(this.currentData.customerData)
610 this.replanning()
611 })
54 }, 612 },
55 goGithub() { 613 getRadom(arr) {
56 window.location.href = 'https://github.com/sunniejs/vue-h5-template' 614 if (arr.length === 0) {
615 return
57 } 616 }
617 return Math.round(Math.random() * (arr.length - 1))
618 },
619 // 模拟取样
620 simulatedSampling() {
621 // this.getRadom(this.currentData.customerData)
622 // console.log(this.getRadom(this.dataList))
623 // this.dataList.forEach(item => (item.status = '未去'))
624 let newArr = [...this.filterTable, ...this.dataList]
625 this.filterTable = []
626 for (let i = 0; i <= newArr.length - 1; i++) {
627 this.$set(newArr[i], `status`, '未去')
58 } 628 }
59 } 629 var num = this.getRadom(newArr) || 1
60 </script> 630 console.log(num)
631 // this.currentData.customerData[this.getRadom(this.currentData.customerData)].status = '已去'
632 for (let i = 0; i < num; i++) {
633 this.$set(newArr[i], `status`, '已去')
634 }
635 this.filterTable = newArr.filter(item => item.status == '已去')
636 this.dataList = newArr.filter(item => item.status == '未去')
637 let arr = [...this.filterTable, ...this.dataList]
638 arr.forEach((item, index) => {
639 item.rowNo = index + 1
640 // this.filterTable[index].rowNo = index
641 // this.dataList[index].rowNo = index
642 })
643 console.log(this.filterTable)
644 console.log(this.dataList)
645 },
646 // 重新规划
647 replanning() {
648 let arr = []
649 if (!this.filterTable.length) {
650 arr = [this.firstObj, ...this.dataList].filter(item => item.status != '已去')
651 } else {
652 arr = [this.filterTable[this.filterTable.length - 1], ...this.dataList.filter(item => item.status != '已去')]
653 }
654 this.initData(arr)
655 },
656 // 调整后规划
657 replanning2() {
658 let arr = []
659 if (!this.filterTable.length) {
660 arr = [this.firstObj, ...this.dataList].filter(item => item.status != '已去')
661 } else {
662 arr = [this.filterTable[this.filterTable.length - 1], ...this.dataList.filter(item => item.status != '已去')]
663 }
664 this.initData2(arr)
665 },
666 // 调整顺序
667 sequence() {},
668 // 模拟插单1
669 insertSheet1() {
670 this.judgePerson(1)
671 // this.dataList = this.dataList.sort(function (a, b) {
672 // var time1 = a.dateTime.split(':')
673 // var time2 = b.dateTime.split(':')
61 674
62 <style lang="scss"> 675 // var hour1 = parseInt(time1[0])
63 .about-container { 676 // var hour2 = parseInt(time2[0])
64 /* 你的命名空间 */ 677
65 background: #fff; 678 // var minute1 = parseInt(time1[1])
66 height: 100vh; 679 // var minute2 = parseInt(time2[1])
67 box-sizing: border-box; 680
68 .warpper { 681 // if (hour1 < hour2) {
69 padding: 50px 12px 12px 12px; 682 // return -1
70 .list { 683 // } else if (hour1 > hour2) {
71 display: flex; 684 // return 1
72 flex-direction: column; 685 // } else {
73 align-items: center; 686 // if (minute1 < minute2) {
74 color: #666; 687 // return -1
75 font-size: 14px; 688 // } else if (minute1 > minute2) {
76 .demo-home__title { 689 // return 1
77 margin: 0 0 6px; 690 // } else {
78 font-size: 32px; 691 // return 0
79 .demo-home__title img, 692 // }
80 .demo-home__title span { 693 // }
81 display: inline-block; 694 // })
82 vertical-align: middle; 695 let arr = [...this.filterTable, ...this.dataList]
83 } 696 arr.forEach((item, index) => {
84 } 697 item.rowNo = index + 1
85 .item { 698 // this.filterTable[index].rowNo = index
86 font-size: 14px; 699 // this.dataList[index].rowNo = index
87 line-height: 34px; 700 })
88 a { 701 },
89 text-decoration: underline; 702 // 模拟插单2
90 } 703 insertSheet2() {
91 .van-button { 704 let num = this.getRadom(this.dataList)
92 /* vant-ui 元素*/ 705 this.deleteData = [this.dataList[num]]
93 background: #ff5500; 706 console.log(this.deleteData)
94 } 707 this.dataList.splice(num, 1)
95 } 708 this.judgePerson(2)
96 709 let arr = [...this.filterTable, ...this.dataList]
97 .logo { 710 console.log(arr)
98 width: 120px; 711 arr.forEach((item, index) => {
99 height: 120px; 712 item.rowNo = index + 1
100 background: url($cdn + '/weapp/logo.png') center / contain no-repeat; 713 // this.filterTable[index].rowNo = index
101 } 714 // this.dataList[index].rowNo = index
102 .wechat { 715 })
103 width: 200px; 716 },
104 height: 200px; 717 judgePerson(type) {
105 img { 718 // this.dataList.splice(this.getRadom(this.dataList), 0,)
106 width: 100%; 719 // array.splice(array.length,0,6,8,9);//第二个参数为0的时候,是可以添加参数的,1的时候是删除
107 height: auto; 720 if (this.currentData.name == '田耀中') {
721 if (type == 1) {
722 this.dataList.splice(this.getRadom(this.dataList), 0, {
723 rowNo: [...this.dataList, ...this.filterTable].length + 1,
724 hospital: '聊城市东昌府区妇幼保健院(两癌)',
725 address: '山东省聊城市东昌府区振兴西路129号',
726 dateTime: '16:40',
727 stopTime: 50,
728 adcode: '340100',
729 batch: '1',
730 pkgs: 100,
731 type: 'new',
732 coordinate: '115.95710000,36.46834600',
733 status: '未去'
734 })
735 } else {
736 this.dataList.splice(this.getRadom(this.dataList), 0, {
737 rowNo: [...this.dataList, ...this.filterTable].length + 1,
738 hospital: '聊城市茌平区洪官屯镇卫生院',
739 address: '聊城市茌平区洪官屯镇政府驻地',
740 dateTime: '15:47',
741 stopTime: 15,
742 adcode: '340100',
743 batch: '1',
744 pkgs: 100,
745 type: 'new',
746 coordinate: '116.06041900,36.39670700',
747 status: '未去'
748 })
749 }
750 } else if (this.currentData.name == '路飞') {
751 if (type == 1) {
752 this.dataList.splice(this.getRadom(this.dataList), 0, {
753 rowNo: [...this.dataList, ...this.filterTable].length + 1,
754 hospital: '德州市立医院',
755 address: '山东省德州市德城区三八路1766号',
756 dateTime: '12:55',
757 adcode: '340100',
758 stopTime: 90,
759 pkgs: 2,
760 batch: '1',
761 type: 'new',
762 coordinate: '116.29370300,37.45320200',
763 status: '未去'
764 })
765 } else {
766 this.dataList.splice(this.getRadom(this.dataList), 0, {
767 rowNo: [...this.dataList, ...this.filterTable].length + 1,
768 hospital: '德棉医院',
769 address: '德州市运河开发区纺织大街522号',
770 dateTime: '14:37',
771 stopTime: 20,
772 adcode: '340100',
773 batch: '1',
774 pkgs: 0,
775 type: 'new',
776 coordinate: '116.27572300,37.45761700',
777 status: '未去'
778 })
779 }
780 } else if (this.currentData.name == '王东') {
781 if (type == 1) {
782 this.dataList.splice(this.getRadom(this.dataList), 0, {
783 rowNo: [...this.dataList, ...this.filterTable].length + 1,
784 hospital: '武警山东总队医院',
785 address: '山东省济南市历下区浆水泉路12--8号',
786 dateTime: '14:45',
787 adcode: '340100',
788 batch: '1',
789 stopTime: 15,
790 pkgs: 100,
791 type: 'new',
792 coordinate: '117.08718600,36.65631700',
793 status: '未去'
794 })
795 } else {
796 this.dataList.splice(this.getRadom(this.dataList), 0, {
797 rowNo: [...this.dataList, ...this.filterTable].length + 1,
798 hospital: '济南汇安健康管理有限公司历下门诊部',
799 address: '济南市历下区文化西路15号',
800 dateTime: '12:05',
801 batch: '1',
802 stopTime: 120,
803 adcode: '340100',
804 pkgs: 100,
805 type: 'new',
806 coordinate: '117.03081400,36.65417800',
807 status: '未去'
808 })
108 } 809 }
810 } else if (this.currentData.name == '尹逊武') {
811 if (type == 1) {
812 this.dataList.splice(this.getRadom(this.dataList), 0, {
813 rowNo: [...this.dataList, ...this.filterTable].length + 1,
814 batch: '1',
815 hospital: '山东省中医院(西院)',
816 address: '山东省济南市文化西路42号',
817 dateTime: '11:25',
818 stopTime: 30,
819 pkgs: 100,
820 coordinate: '117.02325300,36.65510600',
821 type: 'new',
822 status: '未去'
823 })
824 } else {
825 this.dataList.splice(this.getRadom(this.dataList), 0, {
826 rowNo: [...this.dataList, ...this.filterTable].length + 1,
827 batch: '1',
828 hospital: '山东省千佛山医院',
829 address: '经十路山师东路',
830 dateTime: '13:40',
831 stopTime: 20,
832 pkgs: 100,
833 coordinate: '117.04485100,36.64754900',
834 type: 'new',
835 status: '未去'
836 })
109 } 837 }
838 } else {
839 if (this.currentData.batch == '第一批') {
840 this.dataList.splice(this.getRadom(this.dataList), 0, {
841 rowNo: [...this.dataList, ...this.filterTable].length + 1,
842 batch: '1',
843 hospital: '济南样本室对接点',
844 address: '济南市历下区颖秀路2755号',
845 dateTime: '19:45',
846 stopTime: 10,
847 pkgs: '-',
848 coordinate: '117.13394400,36.67904500',
849 type: 'new',
850 status: '未去'
851 })
852 } else {
853 this.dataList.splice(this.getRadom(this.dataList), 0, {
854 rowNo: [...this.dataList, ...this.filterTable].length + 1,
855 batch: '2',
856 hospital: '济南长途汽车总站对接点',
857 address: '济南市天桥区济洛路131号',
858 dateTime: '21:45',
859 stopTime: 15,
860 pkgs: '-',
861 coordinate: '116.99360600,36.68543900',
862 type: 'new',
863 status: '未去'
864 })
110 } 865 }
111 } 866 }
867 },
868 // 开启导航
869 EnableNavigation() {
870 console.log(this.dataList)
871 // this.dataList.map(item => item.coordinate).join(';')
872 this.dataList.map(item => item.coordinate)
873 let arr = []
874 if (!this.filterTable.length) {
875 arr = [this.firstObj, ...this.dataList].filter(item => item.status == '未去')
876 } else {
877 arr = [this.filterTable[this.filterTable.length - 1], ...this.dataList.filter(item => item.status != '已去')]
878 }
879 let obj = {
880 // 起点
881 startingPoint: arr[0].coordinate,
882 startingName: arr[0].hospital,
883 // 终点
884 terminus: arr[arr.length - 1].coordinate,
885 terminusName: arr[arr.length - 1].hospital
886
887 // 途经点
888 // 116.402796,39.936915
889 // pointOfPassage: `${this.dataList.map(item => item.coordinate).join('|')},midwaypoint`
890 }
891 // console.log(obj)
892 let url = ''
893 arr.forEach((item, index) => {
894 if (index > 0 && index < arr.length - 1) {
895 url +=
896 `&via[${index - 1}][adcode]=${item.adcode}` +
897 `&via[${index - 1}][id]` +
898 `&via[${index - 1}][lnglat]=${item.coordinate}` +
899 `&via[${index - 1}][modxy]=${item.coordinate}` +
900 `&via[${index - 1}][name]=${item.hospital}` +
901 `&via[${index - 1}][poitype]`
902 }
903 })
904 let aurl = arr.forEach((item, index) => {
905 if (index > 0 && index < arr.length - 1) {
906 url += `&via[${index - 1}]=${item.coordinate},${item.hospital}`
907 }
908 })
909 console.log('123', url)
910
911 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}`
912 console.log(this.mapUrl)
913 window.open(this.mapUrl)
914 // location.assign(this.mapUrl)
915 let a = `https://uri.amap.com/navigation?from=${this.dataList[0].coordinate},${this.dataList[0].hospital}
916 &to=${this.dataList[this.dataList.length - 1].coordinate},${this.dataList[this.dataList.length - 1].hospital}
917 &via=${aurl}
918 &mode=car
919 &callnative=1
920 &src=mypage
921 &policy=1
922 &coordinate=gaode
923 &callnative`
924 console.log(a)
925 // window.open(a)
926 return
927 // location.href = `https://uri.amap.com/navigation?
928 // from=${this.dataList[0].coordinate}
929 // &to=${this.dataList[0].coordinate}
930 // &via=${this.dataList.map(item => item.coordinate).join(';')}
931 // &mode=car&policy=1&coordinate=gaode&callnative=1`
932 }
933 }
934 }
935 </script>
936
937 <style lang="scss" scoped>
938 .title {
939 padding: 10px;
940 }
941
942 .header-text {
943 font-size: 24px;
944 font-weight: 800;
945 }
946
947 .table-box {
948 margin: 12px 0px;
949
950 .th-row {
951 height: 56px;
952 line-height: 56px;
953 background: #ebf1f7;
954 padding: 0px 12px;
955 font-size: 36px;
956 }
957
958 .tb-row {
959 font-size: 48px;
960 height: 56px;
961 line-height: 56px;
962 padding: 0px 12px;
963 }
964 }
965
966 .fixed-bottom-right {
967 // position: fixed;
968 margin-top: 80px;
969 bottom: 20px;
970 right: 0px;
971 width: 100%;
112 } 972 }
113 </style> 973 </style>
......
1 <template>
2 <div>
3 <div class="title">
4 <van-row type="flex" justify="space-between">
5 <van-col span="8" class="header-text">业务员:{{ curentData.name }}</van-col>
6 <van-col span="8">
7 <div class="header-text" style="display: flex">
8 出发时间:
9 <!-- <van-field v-model="curentData.startTime" size="small" placeholder="请输入时间" /> -->
10 {{ curentData.startTime | formatDate('hh:mm:ss') }}
11 </div>
12 </van-col>
13 <van-col span="8" class="header-text">车牌号:{{ curentData.plate }}</van-col>
14 <!-- <van-col span="8" class="header-text">批次:{{ curentData.batch }}</van-col> -->
15 </van-row>
16 <van-row type="flex" style="margin-top: 15px">
17 <van-col span="8">
18 <div class="header-text">出发地:{{ curentData.arrival }}</div>
19 </van-col>
20 <van-col span="8">
21 <!-- dataList[dataList.length - 1].hospital -->
22 <div class="header-text">目的地:{{ curentData.departure }}</div>
23 </van-col>
24 <van-col span="8">
25 <div class="header-text" style="display: flex">
26 回程时间:
27 <!-- <van-field v-model="curentData.startTime" size="small" placeholder="请输入时间" /> -->
28 {{ curentData.lastArrivalTime | formatDate('hh:mm:ss') }}
29 </div>
30 </van-col>
31 </van-row>
32 <van-row type="flex" style="margin-top: 15px">
33 <van-col span="8">
34 <!-- dataList[dataList.length - 1].hospital -->
35 <div class="header-text">总里程:{{ curentData.totalDistance }}</div>
36 </van-col>
37 <van-col span="8">
38 <div class="header-text" style="display: flex">
39 总耗时:
40 <!-- <van-field v-model="curentData.startTime" size="small" placeholder="请输入时间" /> -->
41 {{ curentData.totalTimes }}
42 </div>
43 </van-col>
44 <!-- <van-col span="8">
45 <div class="header-text" style="display: flex">
46 到达时间:
47 {{ curentData.startTime | formatDate('hh:mm:ss') }}
48 </div>
49 </van-col> -->
50 </van-row>
51 </div>
52 <div>
53 <Table-vant :option="option1" :tableData="filterTable" v-if="filterTable.length > 0"></Table-vant>
54 <div style="width: 100%; overflow-x: auto">
55 <Table-vant
56 :option="option"
57 :tableData="dataList"
58 width="790px"
59 vuedraggable=".list-tr"
60 :rowClick="true"
61 ></Table-vant>
62 </div>
63 <div style="font-size: 16px; font-weight: bold; margin-top: 20px" v-if="deleteData.length > 0">
64 从原安排中移除的任务
65 </div>
66 <Table-vant :option="option2" :tableData="deleteData" v-if="deleteData.length > 0"></Table-vant>
67 </div>
68
69 <div class="fixed-bottom-right">
70 <div style="display: flex; justify-content: space-between; margin-top: 10px">
71 <van-button round plain type="primary" @click="simulatedSampling">模拟取样</van-button>
72 <van-button round plain type="info" @click="insertOrder">模拟插单1</van-button>
73 <van-button round plain type="primary" @click="insertOrder1">模拟插单2</van-button>
74 </div>
75 <div style="display: flex; justify-content: space-between; margin-top: 10px">
76 <van-button round plain type="info" @click="replanning">重新规划</van-button>
77 <van-button round plain type="info" @click="replanning2">调整后规划</van-button>
78 <van-button round plain type="info" @click="EnableNavigation">开启导航</van-button>
79 </div>
80 <div style="display: flex; justify-content: space-between; margin-top: 10px">
81 <van-button round plain type="info" @click="adjustTime()">调整时间</van-button>
82 </div>
83 <!-- <div style="display: flex; justify-content: space-between; margin-top: 10px">
84 <van-button round plain type="info" @click="nextOrder()">下一条</van-button>
85 <van-button round plain type="info" @click="lastOrder()">上一条</van-button>
86 </div> -->
87 </div>
88 <van-dialog
89 v-model="show"
90 v-if="show"
91 title="插单"
92 show-cancel-button
93 :before-close="handleInsertOrder"
94 @opened="openDialog"
95 >
96 城市:
97 <select name="pets" id="pet-select" v-model="city" class="city" @change="cityChage($event)">
98 <option v-for="item in cityOptions" :key="item.value" :value="item.value">{{ item.label }}</option>
99 </select>
100 <div style="width: 100%; overflow: auto; margin-bottom: 50px; height: 500px">
101 <Table-vant :option="option3" :tableData="insertData" width="470px" :showCheck="true">
102 <template v-slot:timeInterval="{ item }">
103 <input type="text" v-model="item.timeInterval" style="width: 80%; height: 25px" />
104 </template>
105 <template v-slot:vehicleType="{ item }">
106 <div>{{ item.vehicleType == 1 ? '电动汽车' : '电动车' }}</div>
107 </template>
108 </Table-vant>
109 </div>
110 </van-dialog>
111 <van-dialog
112 v-model="TimeShow"
113 v-if="TimeShow"
114 title="调整时间"
115 confirmButtonText="调整规划"
116 show-cancel-button
117 :before-close="handleChangeTime"
118 >
119 <div>
120 <van-cell-group>
121 <van-field v-model="rowData.hospital" readonly label="医院" placeholder="" />
122 </van-cell-group>
123 <div>
124 <van-cell-group style="display: flex">
125 <div
126 style="
127 color: #646566;
128 text-align: left;
129 word-wrap: break-word;
130 font-size: 3.733333vw;
131 line-height: 40px;
132 width: -webkit-fill-available;
133 "
134 >
135 取样时间段:
136 </div>
137 <van-field v-model="date1" label="" placeholder="" span="12" />
138 <span style="line-height: 40px">——</span>
139 <van-field v-model="date2" label="" placeholder="" span="12" />
140 </van-cell-group>
141 </div>
142 </div>
143 </van-dialog>
144 </div>
145 </template>
146
147 <script>
148 // 请求接口
149 import { getPlan, getSession, getPlan2 } from '@/api/user.js'
150 import TableVant from '@/components/Table.vue'
151 import { Toast } from 'vant'
152 import _ from 'lodash'
153 export default {
154 components: { TableVant },
155 data() {
156 return {
157 sortTable: [],
158 dataList: [],
159 date1: '',
160 date2: '',
161 insertType: 1,
162 TimeShow: false,
163 index: 0,
164 curentData: {},
165 rowData: {},
166 cityIndex: 0,
167 targetData: [],
168 city: '',
169 departureData: [],
170 allReturnData: [],
171 flag: 1,
172 date: '',
173 show: false,
174 start: '',
175 firstObj: {},
176 filterTable: [],
177 deleteData: [],
178 accessToken: '',
179 originData: [],
180 checkeData: [],
181 orginInsertData: [
182 {
183 name: '',
184 plate: '',
185 departure: '',
186 arrival: '',
187 departureDate: '06:30',
188 customerData: [
189 {
190 rowNo: '2',
191 batch: '1',
192 hospital: '济南西站对接点',
193 address: '济南市槐荫区齐鲁大道6号',
194 dateTime: '07:50',
195 stopTime: 20,
196 pkgs: 0,
197 coordinate: '116.89177900,36.66887900',
198 isOrigin: 'N',
199 vehicleType: '1',
200 timeInterval: ''
201 },
202 {
203 rowNo: '3',
204 batch: '1',
205 hospital: '济南和合医学检验有限公司',
206 address: '槐荫区美里湖555号路海那城总部42号楼',
207 dateTime: '08:55',
208 stopTime: 15,
209 pkgs: 0,
210 coordinate: '116.91937000,36.72000800',
211 isOrigin: 'N',
212 vehicleType: '1',
213 timeInterval: '09:00,10:00'
214 },
215 {
216 rowNo: '4',
217 batch: '1',
218 hospital: '山东第一医科大学附属皮肤病医院',
219 address: '济南市经十路27397号',
220 dateTime: '09:30',
221 stopTime: 10,
222 pkgs: 100,
223 coordinate: '116.92826100,36.65210900',
224 isOrigin: 'N',
225 vehicleType: '1',
226 timeInterval: ''
227 },
228 {
229 rowNo: '5',
230 batch: '1',
231 hospital: '山东禾力升医学检验实验室有限公司',
232 address: '济南市市中区南辛庄西路丰润 怡邻居西门',
233 dateTime: '10:00',
234 stopTime: 10,
235 pkgs: 100,
236 coordinate: '116.96255900,36.63623600',
237 isOrigin: 'N',
238 vehicleType: '1',
239 timeInterval: ''
240 },
241 {
242 rowNo: '6',
243 batch: '1',
244 hospital: '市中慢病第四人民医院青龙山分院',
245 address: '山东省济南市市中区南辛庄西路272号',
246 dateTime: '10:20',
247 stopTime: 40,
248 pkgs: 100,
249 coordinate: '116.95988200,36.62819100',
250 isOrigin: 'N',
251 vehicleType: '1',
252 timeInterval: ''
253 },
254 {
255 rowNo: '7',
256 batch: '1',
257 hospital: '山东省医学科学院放射医学研究所',
258 address: '济南经十路89号9956',
259 dateTime: '11:15',
260 stopTime: 15,
261 pkgs: 100,
262 coordinate: '117.01788200,36.64911300',
263 isOrigin: 'N',
264 vehicleType: '1',
265 timeInterval: ''
266 },
267 {
268 rowNo: '8',
269 batch: '1',
270 hospital: '山东省分析测试中心',
271 address: '山东省济南市历下区科院路19号详情',
272 dateTime: '11:40',
273 stopTime: 10,
274 pkgs: 100,
275 coordinate: '117.04783900,36.64556100',
276 isOrigin: 'N',
277 vehicleType: '1',
278 timeInterval: ''
279 },
280 {
281 rowNo: '9',
282 batch: '1',
283 hospital: '济南汇安健康管理有限公司历下门诊部',
284 address: '济南市历下区文化西路15号',
285 dateTime: '12:05',
286 stopTime: 120,
287 pkgs: 100,
288 coordinate: '117.03081400,36.65417800',
289 isOrigin: 'N',
290 vehicleType: '1',
291 timeInterval: ''
292 },
293 {
294 rowNo: '10',
295 batch: '1',
296 hospital: '武警山东总队医院',
297 address: '山东省济南市历下区浆水泉路12--8号',
298 dateTime: '14:45',
299 stopTime: 15,
300 pkgs: 100,
301 coordinate: '117.08718600,36.65631700',
302 isOrigin: 'N',
303 vehicleType: '1',
304 timeInterval: ''
305 },
306 {
307 rowNo: '11',
308 batch: '1',
309 hospital: '济南样本室对接点',
310 address: '济南市历下区颖秀路2755号',
311 dateTime: '15:20',
312 stopTime: 30,
313 pkgs: 100,
314 coordinate: '117.13394400,36.67904500',
315 isOrigin: 'N',
316 vehicleType: '1',
317 timeInterval: ''
318 },
319 {
320 rowNo: '2',
321 batch: '1',
322 hospital: '山东大学齐鲁医院',
323 address: '济南市文化西路107号',
324 dateTime: '08:50',
325 stopTime: 190,
326 pkgs: 100,
327 coordinate: '117.01839000,36.65659000',
328 isOrigin: 'N',
329 vehicleType: '2',
330 timeInterval: ''
331 },
332 {
333 rowNo: '3',
334 batch: '1',
335 hospital: '山东省中医院(西院)',
336 address: '山东省济南市文化西路42号',
337 dateTime: '11:25',
338 stopTime: 30,
339 pkgs: 100,
340 coordinate: '117.02325300,36.65510600',
341 isOrigin: 'N',
342 vehicleType: '2',
343 timeInterval: ''
344 },
345 {
346 rowNo: '4',
347 batch: '1',
348 hospital: '济南市中医医院1',
349 address: '山东省济南市槐荫区美里路555号海那城总部24号楼101单元401',
350 dateTime: '12:05',
351 stopTime: 30,
352 pkgs: 100,
353 coordinate: '116.91984000,36.72078200',
354 isOrigin: 'N',
355 vehicleType: '2',
356 timeInterval: ''
357 },
358 {
359 rowNo: '5',
360 batch: '1',
361 hospital: '济南丽合医疗美容医院有限公司',
362 address: '山东省济南市历下区黑虎泉北路61号',
363 dateTime: '13:15',
364 stopTime: 10,
365 pkgs: 100,
366 coordinate: '117.03587900,36.67266400',
367 isOrigin: 'N',
368 vehicleType: '2',
369 timeInterval: ''
370 },
371 {
372 rowNo: '6',
373 batch: '1',
374 hospital: '山东省千佛山医院',
375 address: '经十路山师东路',
376 dateTime: '13:40',
377 stopTime: 20,
378 pkgs: 100,
379 coordinate: '117.04485100,36.64754900',
380 isOrigin: 'N',
381 vehicleType: '2',
382 timeInterval: ''
383 },
384 {
385 rowNo: '7',
386 batch: '1',
387 hospital: '山东第一医科大学第一附属医院',
388 address: '山东省济南市历下区经十路16766号',
389 dateTime: '14:05',
390 stopTime: 20,
391 pkgs: 100,
392 coordinate: '117.04244800,36.64765800',
393 isOrigin: 'N',
394 vehicleType: '2',
395 timeInterval: ''
396 },
397 {
398 rowNo: '8',
399 batch: '1',
400 hospital: '济南长途汽车总站对接点',
401 address: '济南市天桥区济洛路131号',
402 dateTime: '17:25',
403 stopTime: 15,
404 pkgs: 0,
405 coordinate: '116.99360600,36.68543900',
406 isOrigin: 'N',
407 vehicleType: '2',
408 timeInterval: ''
409 },
410 {
411 rowNo: '2',
412 batch: '1',
413 hospital: '山东省省立医院东院',
414 address: '山东省济南市历下区经十路9677号',
415 dateTime: '09:05',
416 stopTime: 90,
417 pkgs: 100,
418 coordinate: '117.12129000,36.66338600',
419 isOrigin: 'N',
420 vehicleType: '2',
421 timeInterval: ''
422 },
423 {
424 rowNo: '3',
425 batch: '1',
426 hospital: '山东省省立医院东院(特检)',
427 address: '山东省济南市历下区经十路9667号',
428 dateTime: '10:40',
429 stopTime: 30,
430 pkgs: 100,
431 coordinate: '117.03401900,36.64879400',
432 isOrigin: 'N',
433 vehicleType: '2',
434 timeInterval: ''
435 },
436 {
437 rowNo: '4',
438 batch: '1',
439 hospital: '新华卓越门诊部(济南)有限公司',
440 address: '济南市历下区龙奥北路8-4号玉兰广场2号楼3层',
441 dateTime: '11:20',
442 stopTime: 10,
443 pkgs: 100,
444 coordinate: '117.12426800,36.65054700',
445 isOrigin: 'N',
446 vehicleType: '2',
447 timeInterval: ''
448 },
449 {
450 rowNo: '4',
451 batch: '1',
452 hospital: '济南市历下区姚家办事处仁合社区卫生服务站',
453 address: '济南市历下区荆山路438-62号',
454 dateTime: '11:55',
455 stopTime: 15,
456 pkgs: 100,
457 coordinate: '117.07670700,36.64310600',
458 isOrigin: 'N',
459 vehicleType: '2',
460 timeInterval: ''
461 },
462 {
463 rowNo: '4',
464 batch: '1',
465 hospital: '济南迪安中心办事处',
466 address: '济南市高新区颖秀路2755号',
467 dateTime: '12:40',
468 stopTime: 30,
469 pkgs: 100,
470 coordinate: '117.13394400,36.67904500',
471 isOrigin: 'N',
472 vehicleType: '2',
473 timeInterval: ''
474 },
475 {
476 rowNo: '4',
477 batch: '1',
478 hospital: '济南云康达安医学检验实验室有限公司',
479 address: '济南市高新区颖秀路2766号迪亚产业园东楼二楼',
480 dateTime: '13:40',
481 stopTime: 10,
482 pkgs: 100,
483 coordinate: '117.13506400,36.67946300',
484 isOrigin: 'N',
485 vehicleType: '2',
486 timeInterval: ''
487 },
488 {
489 rowNo: '4',
490 batch: '1',
491 hospital: '济南爱新卓尔医学检验有限公司',
492 address: '济南市历下区天辰路1318',
493 dateTime: '13:55',
494 stopTime: 10,
495 pkgs: 100,
496 coordinate: '117.13495300,36.68222100',
497 isOrigin: 'N',
498 vehicleType: '2',
499 timeInterval: ''
500 },
501 {
502 rowNo: '4',
503 batch: '1',
504 hospital: '济南高新区雅居园社区卫生服务站',
505 address: '济南高新区雅居园小区北门商 用房1期2区1号楼1单元 2201.202.203室',
506 dateTime: '14:15',
507 stopTime: 10,
508 pkgs: 100,
509 coordinate: '117.12526800,36.67245200',
510 isOrigin: 'N',
511 vehicleType: '2',
512 timeInterval: ''
513 },
514 {
515 rowNo: '4',
516 batch: '1',
517 hospital: '山东省立医院',
518 address: '济南市经五纬七路324号',
519 dateTime: '08:25',
520 stopTime: 210,
521 pkgs: 100,
522 coordinate: '116.98415700,36.65685700',
523 isOrigin: 'N',
524 vehicleType: '2',
525 timeInterval: ''
526 },
527 {
528 rowNo: '4',
529 batch: '1',
530 hospital: '济南市槐荫区西市场办事处纬十路社区卫生服务站',
531 address: '济南市槐荫区经三纬十一路330号',
532 dateTime: '12:05',
533 stopTime: 10,
534 pkgs: 100,
535 coordinate: '116.97392000,36.65924000',
536 isOrigin: 'N',
537 vehicleType: '2',
538 timeInterval: ''
539 },
540 {
541 rowNo: '4',
542 batch: '1',
543 hospital: '济南市天桥区纬北经纬嘉园社区卫生服务站',
544 address: '经一路经纬嘉园住宅小区141-31号',
545 dateTime: '16:30',
546 stopTime: 20,
547 pkgs: 100,
548 coordinate: '120.08842500,30.87737500',
549 isOrigin: 'N',
550 vehicleType: '2',
551 timeInterval: ''
552 },
553 {
554 rowNo: '4',
555 batch: '1',
556 hospital: '济南市槐荫区五里沟公祥街社区卫生服务站',
557 address: '槐荫区纬五路39-7',
558 dateTime: '16:55',
559 stopTime: 15,
560 pkgs: 100,
561 coordinate: '116.98715800,36.66398400',
562 isOrigin: 'N',
563 vehicleType: '2',
564 timeInterval: ''
565 },
566 {
567 rowNo: '4',
568 batch: '1',
569 hospital: '山东光正眼科医院有限公司',
570 address: '济南市市中区经二路223号',
571 dateTime: '17:15',
572 stopTime: 50,
573 pkgs: 100,
574 coordinate: '116.99099400,36.66410100',
575 isOrigin: 'N',
576 vehicleType: '2',
577 timeInterval: ''
578 },
579 {
580 rowNo: '4',
581 batch: '1',
582 hospital: '山东光正眼科医院有限公司',
583 address: '济南市市中区经二路223号',
584 dateTime: '17:15',
585 stopTime: 50,
586 pkgs: 100,
587 coordinate: '116.99099400,36.66410100',
588 isOrigin: 'N',
589 vehicleType: '2',
590 timeInterval: ''
591 },
592 {
593 rowNo: '4',
594 batch: '1',
595 hospital: '山东省康复医院',
596 address: '历城区唐冶新区围子山路3126号',
597 dateTime: '10:40',
598 stopTime: 50,
599 pkgs: 100,
600 coordinate: '117.24190100,36.68823600',
601 isOrigin: 'N',
602 vehicleType: '2',
603 timeInterval: ''
604 },
605 {
606 rowNo: '4',
607 batch: '1',
608 hospital: '山东水发生命科学研究有限公司',
609 address: '山东省济南市高新区大正路1777号生命科学城13号楼一层',
610 dateTime: '11:50',
611 stopTime: 15,
612 pkgs: 100,
613 coordinate: '117.32744800,36.70332300',
614 isOrigin: 'N',
615 vehicleType: '2',
616 timeInterval: ''
617 },
618 {
619 rowNo: '4',
620 batch: '1',
621 hospital: '章丘慢性病防治所对接点',
622 address: '济南市章丘区唐王山路1099号',
623 dateTime: '12:40',
624 stopTime: 15,
625 pkgs: 0,
626 coordinate: '117.53489000,36.69297100',
627 isOrigin: 'N',
628 vehicleType: '2',
629 timeInterval: ''
630 },
631 {
632 rowNo: '4',
633 batch: '1',
634 hospital: '济南万泉生物技术有限公司',
635 address: '济南市高新区港兴三路北段一号济南药谷研发平台区1号楼A座1305',
636 dateTime: '14:05',
637 stopTime: 15,
638 pkgs: 100,
639 coordinate: '117.22268400,36.66921200',
640 isOrigin: 'N',
641 vehicleType: '2',
642 timeInterval: ''
643 },
644 {
645 rowNo: '4',
646 batch: '1',
647 hospital: '健颐生物(药谷)',
648 address: '济南市历城区港兴三路济南药谷1号楼A座25楼',
649 dateTime: '14:25',
650 stopTime: 15,
651 pkgs: 100,
652 coordinate: '117.22278300,36.66978200',
653 isOrigin: 'N',
654 vehicleType: '2',
655 timeInterval: ''
656 },
657 {
658 rowNo: '4',
659 batch: '1',
660 hospital: '山东惠然生物科技有限公司',
661 address: '高新区港兴三路北段1号济南市药谷研发平台区2号楼1801房间',
662 dateTime: '14:45',
663 stopTime: 15,
664 pkgs: 100,
665 coordinate: '117.22239900,36.66859400',
666 isOrigin: 'N',
667 vehicleType: '2',
668 timeInterval: ''
669 },
670 {
671 rowNo: '4',
672 batch: '1',
673 hospital: '山东富优生命科学有限公司',
674 address: '山东富优生命科学有限公司',
675 dateTime: '15:05',
676 stopTime: 15,
677 pkgs: 100,
678 coordinate: '117.22283000,36.67004000',
679 isOrigin: 'N',
680 vehicleType: '2',
681 timeInterval: ''
682 },
683 {
684 rowNo: '4',
685 batch: '1',
686 hospital: '山东省齐鲁细胞治疗工程技术有限公司',
687 address: '山东省济南市高新区港兴三路1109号',
688 dateTime: '16:05',
689 stopTime: 10,
690 pkgs: 100,
691 coordinate: '117.22257900,36.65528700',
692 isOrigin: 'N',
693 vehicleType: '2',
694 timeInterval: ''
695 },
696 {
697 rowNo: '4',
698 batch: '1',
699 hospital: '济南高新开发区景琪综合门诊有限公司',
700 address: '高新区舜华路街道街道华奥路77号东鲁凤凰上都6-104',
701 dateTime: '16:35',
702 stopTime: 15,
703 pkgs: 100,
704 coordinate: '117.15647200,36.65323700',
705 isOrigin: 'N',
706 vehicleType: '2',
707 timeInterval: ''
708 },
709 {
710 rowNo: '4',
711 batch: '1',
712 hospital: '济南市历下区龙洞办事处社区卫生服务中心',
713 address: '历下区龙洞办事处锦屏家园龙锦生活广场10号楼02号铺',
714 dateTime: '17:05',
715 stopTime: 10,
716 pkgs: 100,
717 coordinate: '117.12264500,36.62768600',
718 isOrigin: 'N',
719 vehicleType: '2',
720 timeInterval: ''
721 },
722 {
723 rowNo: '4',
724 batch: '1',
725 hospital: '济南佰年颐堂中医医院有限公司',
726 address: '山东省济南市历城区工业北路180号院内办公楼2号楼1层',
727 dateTime: '14:55',
728 stopTime: 10,
729 pkgs: 100,
730 coordinate: '117.26118400,36.63685400',
731 isOrigin: 'N',
732 vehicleType: '2',
733 timeInterval: ''
734 },
735 {
736 rowNo: '4',
737 batch: '1',
738 hospital: '山东元辰生物医药科技集团有限公司',
739 address: '华山街道丑父路135号华山片区安置区二区S3号楼商业区四层',
740 dateTime: '15:20',
741 stopTime: 10,
742 pkgs: 100,
743 coordinate: '117.06162300,36.68773700',
744 isOrigin: 'N',
745 vehicleType: '2',
746 timeInterval: ''
747 },
748 {
749 rowNo: '4',
750 batch: '1',
751 hospital: '山东大学第二医院(检验科)',
752 address: '山东大学第二医院(检验科)',
753 dateTime: '15:50',
754 stopTime: 30,
755 pkgs: 100,
756 coordinate: '117.04054100,36.69042100',
757 isOrigin: 'N',
758 vehicleType: '2',
759 timeInterval: ''
760 },
761 {
762 rowNo: '4',
763 batch: '1',
764 hospital: '山东省立第三医院',
765 address: '山东省济南市无影山中路12号',
766 dateTime: '16:40',
767 stopTime: 60,
768 pkgs: 100,
769 coordinate: '116.98967800,36.68406100',
770 isOrigin: 'N',
771 vehicleType: '2',
772 timeInterval: ''
773 },
774 {
775 rowNo: '4',
776 batch: '1',
777 hospital: '艾迪康',
778 address: '济南市天桥区田家庄东路4号',
779 dateTime: '20:45',
780 stopTime: 5,
781 pkgs: 100,
782 coordinate: '116.97534100,36.69010900',
783 isOrigin: 'N',
784 vehicleType: '2',
785 timeInterval: ''
786 },
787 {
788 rowNo: '4',
789 batch: '1',
790 hospital: '历城奇鲁诊所',
791 address: '七里堡东路84号4号',
792 dateTime: '10:55',
793 stopTime: 10,
794 pkgs: 100,
795 coordinate: '117.07034900,36.69118200',
796 isOrigin: 'N',
797 vehicleType: '2',
798 timeInterval: ''
799 },
800 {
801 rowNo: '4',
802 batch: '1',
803 hospital: '山东省立第三医院(新城社区卫生服务中心)',
804 address: '济南市天桥区新黄路2567号',
805 dateTime: '11:25',
806 stopTime: 5,
807 pkgs: 100,
808 coordinate: '117.01213500,36.70852500',
809 isOrigin: 'N',
810 vehicleType: '2',
811 timeInterval: ''
812 },
813 {
814 rowNo: '4',
815 batch: '1',
816 hospital: '山东省立第三医院(药山站点)',
817 address: '山东省济南市天桥区药山西路南端',
818 dateTime: '11:50',
819 stopTime: 5,
820 pkgs: 100,
821 coordinate: '116.96048900,36.71312700',
822 isOrigin: 'N',
823 vehicleType: '2',
824 timeInterval: ''
825 },
826 {
827 rowNo: '4',
828 batch: '1',
829 hospital: '山东省立第三医院(济南市天桥人民医院)',
830 address: '济南市天桥区天桥街25号',
831 dateTime: '12:40',
832 stopTime: 15,
833 pkgs: 100,
834 coordinate: '116.96048900,36.71312700',
835 isOrigin: 'N',
836 vehicleType: '2',
837 timeInterval: ''
838 },
839 {
840 rowNo: '4',
841 batch: '1',
842 hospital: '济南市市中区七里山街道泉景天沅社区卫生服务站',
843 address: '济南市市中区郎茂山路4号101号',
844 dateTime: '13:15',
845 stopTime: 15,
846 pkgs: 100,
847 coordinate: '116.98310000,36.62614400',
848 isOrigin: 'N',
849 vehicleType: '2',
850 timeInterval: ''
851 },
852 {
853 rowNo: '4',
854 batch: '1',
855 hospital: '山东省南山医院有限责任公司',
856 address: '济南市市中区英雄山路134号',
857 dateTime: '13:40',
858 stopTime: 50,
859 pkgs: 100,
860 coordinate: '116.98310000,36.62614400',
861 isOrigin: 'N',
862 vehicleType: '2',
863 timeInterval: ''
864 },
865 {
866 rowNo: '4',
867 batch: '1',
868 hospital: '山东省南山医院有限责任公司(艾迪康站点)',
869 address: '济南市市中区英雄山路134号',
870 dateTime: '12:30',
871 stopTime: 5,
872 pkgs: 100,
873 coordinate: '117.00314900,36.62241000',
874 isOrigin: 'N',
875 vehicleType: '2',
876 timeInterval: ''
877 },
878 {
879 rowNo: '4',
880 batch: '1',
881 hospital: '济南市历下区第二人民医院',
882 address: '济南市历下区东关大街57号',
883 dateTime: '14:55',
884 stopTime: 15,
885 pkgs: 100,
886 coordinate: '117.04394500,36.67837900',
887 isOrigin: 'N',
888 vehicleType: '2',
889 timeInterval: ''
890 },
891 {
892 rowNo: '4',
893 batch: '1',
894 hospital: '济南三株酵本草医院有限公司',
895 address: '济南市历城区山大北路77-6号',
896 dateTime: '15:20',
897 stopTime: 10,
898 pkgs: 100,
899 coordinate: '117.06090000,36.67966900',
900 isOrigin: 'N',
901 vehicleType: '2',
902 timeInterval: ''
903 },
904 {
905 rowNo: '4',
906 batch: '1',
907 hospital: '济南市历城区妇幼保健计划生育服务中心(两癌)',
908 address: '济南市历城区洪楼西路45号',
909 dateTime: '15:35',
910 stopTime: 15,
911 pkgs: 100,
912 coordinate: '117.06136300,36.68004900',
913 isOrigin: 'N',
914 vehicleType: '2',
915 timeInterval: ''
916 },
917 {
918 rowNo: '4',
919 batch: '1',
920 hospital: '历城中医院',
921 address: '济南市历城区洪家楼南路26号',
922 dateTime: '15:55',
923 stopTime: 40,
924 pkgs: 100,
925 coordinate: '117.06652000,36.68147900',
926 isOrigin: 'N',
927 vehicleType: '2',
928 timeInterval: ''
929 },
930 {
931 rowNo: '4',
932 batch: '1',
933 hospital: '济南远大中医脑康医院有限公司',
934 address: '济南市历城区二环东路3889号',
935 dateTime: '16:40',
936 stopTime: 15,
937 pkgs: 100,
938 coordinate: '117.07276600,36.67283300',
939 isOrigin: 'N',
940 vehicleType: '2',
941 timeInterval: ''
942 },
943 {
944 rowNo: '4',
945 batch: '1',
946 hospital: '济南伊美尔整形美容医院有限公司',
947 address: '济南市解放路30-1号',
948 dateTime: '17:05',
949 stopTime: 10,
950 pkgs: 100,
951 coordinate: '117.06004900,36.66592800',
952 isOrigin: 'N',
953 vehicleType: '2',
954 timeInterval: ''
955 },
956 {
957 rowNo: '4',
958 batch: '1',
959 hospital: '济南市中心医院(精准中心)',
960 address: '山东省济南市历城区解放路105号',
961 dateTime: '17:25',
962 stopTime: 10,
963 pkgs: 100,
964 coordinate: '117.06652000,36.68147900',
965 isOrigin: 'N',
966 vehicleType: '2',
967 timeInterval: ''
968 },
969 {
970 rowNo: '4',
971 batch: '1',
972 hospital: '济南市中心医院(特检)',
973 address: '济南市历下区解放路105号',
974 dateTime: '17:40',
975 stopTime: 20,
976 pkgs: 100,
977 coordinate: '117.04767000,36.66776700',
978 isOrigin: 'N',
979 vehicleType: '2',
980 timeInterval: ''
981 },
982 {
983 rowNo: '4',
984 batch: '1',
985 hospital: '济南市济阳区人民医院',
986 address: '济阳县纬六路9号',
987 dateTime: '09:10',
988 stopTime: 80,
989 pkgs: 100,
990 coordinate: '116.98330600,36.66371900',
991 isOrigin: 'N',
992 vehicleType: '2',
993 timeInterval: ''
994 },
995 {
996 rowNo: '4',
997 batch: '1',
998 hospital: '济南市济阳区中医医院(病理)',
999 address: '山东省济南市济阳区纬二路112号',
1000 dateTime: '10:40',
1001 stopTime: 30,
1002 pkgs: 100,
1003 coordinate: '117.19134000,36.97515700',
1004 isOrigin: 'N',
1005 vehicleType: '2',
1006 timeInterval: ''
1007 },
1008 {
1009 rowNo: '4',
1010 batch: '1',
1011 hospital: '济南市济阳区中医医院',
1012 address: '山东省济南市济阳区纬二路112号',
1013 dateTime: '11:15',
1014 stopTime: 120,
1015 pkgs: 100,
1016 coordinate: '117.19134000,36.97515700',
1017 isOrigin: 'N',
1018 vehicleType: '2',
1019 timeInterval: ''
1020 },
1021 {
1022 rowNo: '4',
1023 batch: '1',
1024 hospital: '济南市济阳区妇幼保健计划生育服务中心',
1025 address: '山东省济南市济阳区老城街16号',
1026 dateTime: '13:45',
1027 stopTime: 30,
1028 pkgs: 100,
1029 coordinate: '117.21862800,36.97423500',
1030 isOrigin: 'N',
1031 vehicleType: '2',
1032 timeInterval: ''
1033 },
1034 {
1035 rowNo: '4',
1036 batch: '1',
1037 hospital: '济南市济阳区妇幼保健院计划生育服务中心(站点)',
1038 address: '济阳区济北街道开元大街166号',
1039 dateTime: '14:30',
1040 stopTime: 10,
1041 pkgs: 100,
1042 coordinate: '117.17039900,36.97523800',
1043 isOrigin: 'N',
1044 vehicleType: '2',
1045 timeInterval: ''
1046 },
1047 {
1048 rowNo: '4',
1049 batch: '1',
1050 hospital: '济阳妇幼对接点',
1051 address: '济阳区济北街道开元大街166号',
1052 dateTime: '14:40',
1053 stopTime: 5,
1054 pkgs: 100,
1055 coordinate: '117.17039900,36.97523800',
1056 isOrigin: 'N',
1057 vehicleType: '2',
1058 timeInterval: ''
1059 },
1060 {
1061 rowNo: '4',
1062 batch: '1',
1063 hospital: '济阳妇儿医院',
1064 address: '济南市济 阳区德阳路与兴河街交叉口',
1065 dateTime: '15:20',
1066 stopTime: 10,
1067 pkgs: 100,
1068 coordinate: '117.12511900,36.93419300',
1069 isOrigin: 'N',
1070 vehicleType: '2',
1071 timeInterval: ''
1072 }
1073 ]
1074 },
1075 {
1076 name: '',
1077 plate: '',
1078 departure: '',
1079 arrival: '',
1080 departureDate: '08:00',
1081 customerData: [
1082 {
1083 rowNo: '1',
1084 batch: '1',
1085 hospital: '德州交通医院',
1086 address: '德城区东风中路389号',
1087 dateTime: '09:15',
1088 stopTime: 20,
1089 pkgs: 2,
1090 coordinate: '116.31887300,37.44295900',
1091 isOrigin: 'N',
1092 vehicleType: '2',
1093 timeInterval: ''
1094 },
1095 {
1096 rowNo: '2',
1097 batch: '1',
1098 hospital: '德州市人民医院',
1099 address: '德州市新湖大街1751号',
1100 dateTime: '09:47',
1101 stopTime: 100,
1102 pkgs: 41,
1103 coordinate: '116.30555600,37.45116400',
1104 isOrigin: 'N',
1105 vehicleType: '2',
1106 timeInterval: ''
1107 },
1108 {
1109 rowNo: '3',
1110 batch: '1',
1111 hospital: '德州市人民医院(特检)',
1112 address: '德州市新湖大街1751号',
1113 dateTime: '11:32',
1114 stopTime: 15,
1115 pkgs: 1,
1116 coordinate: '116.30555600,37.45116400',
1117 isOrigin: 'N',
1118 vehicleType: '2',
1119 timeInterval: ''
1120 },
1121 {
1122 rowNo: '4',
1123 batch: '1',
1124 hospital: '德州市立医院对接点',
1125 address: '德州市德城区三八中路1766号',
1126 dateTime: '11:55',
1127 stopTime: 20,
1128 pkgs: 100,
1129 coordinate: '116.29370300,37.45320200',
1130 isOrigin: 'N',
1131 vehicleType: '2',
1132 timeInterval: ''
1133 },
1134 {
1135 rowNo: '5',
1136 batch: '1',
1137 hospital: '德州市立医院',
1138 address: '山东省德州市德城区三八路1766号',
1139 dateTime: '12:55',
1140 stopTime: 90,
1141 pkgs: 2,
1142 coordinate: '116.29370300,37.45320200',
1143 isOrigin: 'N',
1144 vehicleType: '2',
1145 timeInterval: ''
1146 },
1147 {
1148 rowNo: '6',
1149 batch: '1',
1150 hospital: '德棉医院',
1151 address: '德州市运河开发区纺织大街522号',
1152 dateTime: '14:37',
1153 stopTime: 20,
1154 pkgs: 100,
1155 coordinate: '116.27572300,37.45761700',
1156 isOrigin: 'N',
1157 vehicleType: '2',
1158 timeInterval: ''
1159 },
1160 {
1161 rowNo: '7',
1162 batch: '1',
1163 hospital: '德州汽车站对接点',
1164 address: '德州市德城区东风路1667号',
1165 dateTime: '15:12',
1166 stopTime: 15,
1167 pkgs: 100,
1168 coordinate: '116.29082500,37.44405800',
1169 isOrigin: 'N',
1170 vehicleType: '2',
1171 timeInterval: ''
1172 },
1173 {
1174 rowNo: '8',
1175 batch: '1',
1176 hospital: '武城县妇幼保健计划生育服务中心(两癌)',
1177 address: '山东省德州市武城县振华西街1536号',
1178 dateTime: '09:50',
1179 stopTime: 10,
1180 pkgs: 100,
1181 coordinate: '116.06056800,37.21353300',
1182 isOrigin: 'N',
1183 vehicleType: '1',
1184 timeInterval: ''
1185 },
1186 {
1187 rowNo: '9',
1188 batch: '1',
1189 hospital: '武城县老城镇仓上村卫生室',
1190 address: '武城县老城镇仓上村',
1191 dateTime: '10:30',
1192 stopTime: 10,
1193 pkgs: 100,
1194 coordinate: '115.94163900,37.11129600',
1195 isOrigin: 'N',
1196 vehicleType: '1',
1197 timeInterval: ''
1198 },
1199 {
1200 rowNo: '10',
1201 batch: '1',
1202 hospital: '武城县老城镇新运社区卫生室',
1203 address: '武城县老城镇',
1204 dateTime: '10:45',
1205 stopTime: 10,
1206 pkgs: 100,
1207 coordinate: '115.89356900,37.14593200',
1208 isOrigin: 'N',
1209 vehicleType: '1',
1210 timeInterval: ''
1211 },
1212 {
1213 rowNo: '11',
1214 batch: '1',
1215 hospital: '夏津县中医院',
1216 address: '夏津县经开区北外环路',
1217 dateTime: '11:30',
1218 stopTime: 15,
1219 pkgs: 100,
1220 coordinate: '116.39217300,37.49376100',
1221 isOrigin: 'N',
1222 vehicleType: '1',
1223 timeInterval: ''
1224 },
1225 {
1226 rowNo: '12',
1227 batch: '1',
1228 hospital: '夏津三鹤血液透析有限公司',
1229 address: '山东省德州市夏津县银城街道西关街142号',
1230 dateTime: '12:25',
1231 stopTime: 15,
1232 pkgs: 100,
1233 coordinate: '116.01219400,36.95977800',
1234 isOrigin: 'N',
1235 vehicleType: '1',
1236 timeInterval: ''
1237 },
1238 {
1239 rowNo: '13',
1240 batch: '1',
1241 hospital: '夏津慎安血液透析中心有限公司',
1242 address: '山东省德州市夏津县银城街道西关南街132号',
1243 dateTime: '12:45',
1244 stopTime: 10,
1245 pkgs: 100,
1246 coordinate: '115.99462000,36.95193800',
1247 isOrigin: 'N',
1248 vehicleType: '1',
1249 timeInterval: ''
1250 },
1251 {
1252 rowNo: '14',
1253 batch: '1',
1254 hospital: '临清市老赵庄镇卫生院',
1255 address: '老赵庄镇老赵庄村199号',
1256 dateTime: '13:25',
1257 stopTime: 10,
1258 pkgs: 100,
1259 coordinate: '115.86014600,36.83849000',
1260 isOrigin: 'N',
1261 vehicleType: '1',
1262 timeInterval: ''
1263 },
1264 {
1265 rowNo: '15',
1266 batch: '1',
1267 hospital: '李娅诊所',
1268 address: '临清市黑庄民族小区',
1269 dateTime: '13:55',
1270 stopTime: 15,
1271 pkgs: 100,
1272 coordinate: '115.73074700,36.84652300',
1273 isOrigin: 'N',
1274 vehicleType: '1',
1275 timeInterval: ''
1276 },
1277 {
1278 rowNo: '16',
1279 batch: '1',
1280 hospital: '临西县第二人民医院',
1281 address: '河北省邢台市临西县河西镇顺河街7号',
1282 dateTime: '14:25',
1283 stopTime: 10,
1284 pkgs: 100,
1285 coordinate: '115.68843100,36.85466500',
1286 isOrigin: 'N',
1287 vehicleType: '1',
1288 timeInterval: ''
1289 },
1290 {
1291 rowNo: '17',
1292 batch: '1',
1293 hospital: '聊城市第二人民医院(特检)',
1294 address: '聊城市临清市先锋街道办事处健康街306号',
1295 dateTime: '14:45',
1296 stopTime: 10,
1297 pkgs: 100,
1298 coordinate: '115.70215500,36.85302700',
1299 isOrigin: 'N',
1300 vehicleType: '1',
1301 timeInterval: ''
1302 },
1303 {
1304 rowNo: '18',
1305 batch: '1',
1306 hospital: '百康诊所',
1307 address: '临清市观澜国际B3西4户',
1308 dateTime: '15:09',
1309 stopTime: 10,
1310 pkgs: 100,
1311 coordinate: '115.71547000,36.81913800',
1312 isOrigin: 'N',
1313 vehicleType: '1',
1314 timeInterval: ''
1315 },
1316 {
1317 rowNo: '19',
1318 batch: '1',
1319 hospital: '聊城市第二人民医院(新院)',
1320 address: '临清市315省道和新华路交汇处',
1321 dateTime: '15:32',
1322 stopTime: 10,
1323 pkgs: 100,
1324 coordinate: '115.59475300,36.75968600',
1325 isOrigin: 'N',
1326 vehicleType: '1',
1327 timeInterval: ''
1328 },
1329 {
1330 rowNo: '20',
1331 batch: '1',
1332 hospital: '夏津联络处对接点',
1333 address: '德州市夏津县泉林小区',
1334 dateTime: '15:52',
1335 stopTime: 15,
1336 pkgs: 100,
1337 coordinate: '115.99405300,36.97021100',
1338 isOrigin: 'N',
1339 vehicleType: '1',
1340 timeInterval: ''
1341 }
1342 ]
1343 },
1344 {
1345 name: '',
1346 plate: '',
1347 departure: '',
1348 arrival: '',
1349 departureDate: '08:00',
1350 customerData: [
1351 {
1352 rowNo: '1',
1353 batch: '1',
1354 hospital: '聊城市东昌府区侯营镇卫生院',
1355 address: '山东省聊城市东昌府区侯营镇侯营村',
1356 dateTime: '08:35',
1357 stopTime: 10,
1358 pkgs: 100,
1359 coordinate: '115.88725200,36.39946400',
1360 isOrigin: 'N',
1361 vehicleType: '1',
1362 timeInterval: ''
1363 },
1364 {
1365 rowNo: '2',
1366 batch: '1',
1367 hospital: '聊城市东昌府区和光诊所',
1368 address: '山东省聊城市东昌府区柳园街道陈口路金柱大学城A区30幢s30-113号商铺',
1369 dateTime: '09:12',
1370 stopTime: 10,
1371 pkgs: 100,
1372 coordinate: '116.01666300,36.44393800',
1373 isOrigin: 'N',
1374 vehicleType: '1',
1375 timeInterval: ''
1376 },
1377 {
1378 rowNo: '3',
1379 batch: '1',
1380 hospital: '聊城市东昌府区韩集镇卫生院',
1381 address: '山东省聊城市东昌府区韩集镇政府',
1382 dateTime: '09:55',
1383 stopTime: 10,
1384 pkgs: 100,
1385 coordinate: '116.18228000,36.40897800',
1386 isOrigin: 'N',
1387 vehicleType: '1',
1388 timeInterval: ''
1389 },
1390 {
1391 rowNo: '4',
1392 batch: '1',
1393 hospital: '茌平万里行中医诊所',
1394 address: '聊城市茌平县建设路1416号',
1395 dateTime: '10:40',
1396 stopTime: 10,
1397 pkgs: 100,
1398 coordinate: '116.21077700,36.56289800',
1399 isOrigin: 'N',
1400 vehicleType: '1',
1401 timeInterval: ''
1402 },
1403 {
1404 rowNo: '5',
1405 batch: '1',
1406 hospital: '聊城市茌平区人民医院',
1407 address: '聊城市茌平县文化路99号',
1408 dateTime: '11:00',
1409 stopTime: 15,
1410 pkgs: 100,
1411 coordinate: '116.24962100,36.57960700',
1412 isOrigin: 'N',
1413 vehicleType: '1',
1414 timeInterval: ''
1415 },
1416 {
1417 rowNo: '6',
1418 batch: '1',
1419 hospital: '聊城市茌平区中医医院',
1420 address: '聊城市茌平区新政西路1163号',
1421 dateTime: '11:22',
1422 stopTime: 30,
1423 pkgs: 100,
1424 coordinate: '116.24271400,36.58568300',
1425 isOrigin: 'N',
1426 vehicleType: '1',
1427 timeInterval: ''
1428 },
1429 {
1430 rowNo: '7',
1431 batch: '1',
1432 hospital: '茌平县和睦家妇科诊所',
1433 address: '茌平县三产院内',
1434 dateTime: '12:22',
1435 stopTime: 5,
1436 pkgs: 100,
1437 coordinate: '116.23697900,36.58427100',
1438 isOrigin: 'N',
1439 vehicleType: '1',
1440 timeInterval: ''
1441 },
1442 {
1443 rowNo: '8',
1444 batch: '1',
1445 hospital: '聊城市茌平区温陈街道社区卫生服务中心',
1446 address: '聊城市茌平区温陈街道',
1447 dateTime: '12:47',
1448 stopTime: 5,
1449 pkgs: 100,
1450 coordinate: '116.24984700,36.59027400',
1451 isOrigin: 'N',
1452 vehicleType: '1',
1453 timeInterval: ''
1454 },
1455 {
1456 rowNo: '9',
1457 batch: '1',
1458 hospital: '聊城市茌平区胡屯镇卫生院',
1459 address: '聊城市茌平区新政西路1163号',
1460 dateTime: '13:12',
1461 stopTime: 10,
1462 pkgs: 100,
1463 coordinate: '116.24271400,36.58568300',
1464 isOrigin: 'N',
1465 vehicleType: '1',
1466 timeInterval: ''
1467 },
1468 {
1469 rowNo: '10',
1470 batch: '1',
1471 hospital: '高唐县中医院',
1472 address: '高唐县东兴路16号',
1473 dateTime: '13:52',
1474 stopTime: 10,
1475 pkgs: 100,
1476 coordinate: '116.25357800,36.85772200',
1477 isOrigin: 'N',
1478 vehicleType: '1',
1479 timeInterval: ''
1480 },
1481 {
1482 rowNo: '11',
1483 batch: '1',
1484 hospital: '高唐县人民医院',
1485 address: '山东省高唐县金城西路99号',
1486 dateTime: '14:17',
1487 stopTime: 15,
1488 pkgs: 100,
1489 coordinate: '116.22798600,36.86687600',
1490 isOrigin: 'N',
1491 vehicleType: '1',
1492 timeInterval: ''
1493 },
1494 {
1495 rowNo: '12',
1496 batch: '1',
1497 hospital: '聊城市茌平区第二人民医院',
1498 address: '茌平县博平镇政府街',
1499 dateTime: '15:04',
1500 stopTime: 15,
1501 pkgs: 100,
1502 coordinate: '116.11760000,36.58789400',
1503 isOrigin: 'N',
1504 vehicleType: '1',
1505 timeInterval: ''
1506 },
1507 {
1508 rowNo: '13',
1509 batch: '1',
1510 hospital: '聊城市茌平区洪官屯镇卫生院',
1511 address: '聊城市茌平区洪官屯镇政府驻地',
1512 dateTime: '15:47',
1513 stopTime: 15,
1514 pkgs: 100,
1515 coordinate: '116.06041900,36.39670700',
1516 isOrigin: 'N',
1517 vehicleType: '1',
1518 timeInterval: ''
1519 },
1520 {
1521 rowNo: '14',
1522 batch: '1',
1523 hospital: '聊城汽车总站对接点',
1524 address: '聊城市东昌府区建设路与柳园北路交汇处西北角',
1525 dateTime: '16:22',
1526 stopTime: 8,
1527 pkgs: 100,
1528 coordinate: '115.98847500,36.47286500',
1529 isOrigin: 'N',
1530 vehicleType: '1',
1531 timeInterval: ''
1532 },
1533 {
1534 rowNo: '15',
1535 batch: '1',
1536 hospital: '聊城市东昌府区妇幼保健院(两癌)',
1537 address: '山东省聊城市东昌府区振兴西路129号',
1538 dateTime: '16:40',
1539 stopTime: 50,
1540 pkgs: 100,
1541 coordinate: '115.95710000,36.46834600',
1542 isOrigin: 'N',
1543 vehicleType: '1',
1544 timeInterval: ''
1545 },
1546 {
1547 rowNo: '16',
1548 batch: '1',
1549 hospital: '聊城联络处(回)',
1550 address: '山东省聊城市东昌府区',
1551 dateTime: '17:43',
1552 stopTime: 30,
1553 pkgs: 100,
1554 coordinate: '115.98849100,36.43464500',
1555 isOrigin: 'N',
1556 vehicleType: '1',
1557 timeInterval: ''
1558 },
1559 {
1560 rowNo: '17',
1561 batch: '1',
1562 hospital: '聊城联络处对接点',
1563 address: '山东省聊城市东昌府区',
1564 dateTime: '18:18',
1565 stopTime: 20,
1566 pkgs: 100,
1567 coordinate: '115.98849100,36.43464500',
1568 isOrigin: 'N',
1569 vehicleType: '1',
1570 timeInterval: ''
1571 }
1572 ]
1573 }
1574 ],
1575 insertData: [],
1576 cityOptions: [
1577 { label: '济南', value: '济南' },
1578 { label: '德州', value: '德州' },
1579 { label: '聊城', value: '聊城' }
1580 ],
1581 option: {
1582 column: [
1583 {
1584 label: '序号',
1585 tableDataprop: 'rowNo',
1586 width: '50px'
1587 },
1588 {
1589 label: '途经',
1590 tableDataprop: 'hospital',
1591 width: '230px'
1592 },
1593 {
1594 label: '取样数',
1595 tableDataprop: 'pkgs',
1596 width: '50px',
1597 align: 'right'
1598 },
1599 {
1600 label: '里程(km)',
1601 tableDataprop: 'distance',
1602 width: '80px',
1603 align: 'right'
1604 },
1605 {
1606 label: '路程耗时(分钟)',
1607 tableDataprop: 'duration',
1608 width: '90px',
1609 align: 'right'
1610 },
1611 {
1612 label: '停留时长(分钟)',
1613 tableDataprop: 'stopTime',
1614 width: '90px',
1615 align: 'right'
1616 },
1617 {
1618 label: '预计到达时间',
1619 tableDataprop: 'reachDate',
1620 width: '90px',
1621 align: 'right'
1622 },
1623 {
1624 label: '预计离开时间',
1625 tableDataprop: 'leaveDate',
1626 width: '90px',
1627 align: 'right'
1628 },
1629 {
1630 label: '状态',
1631 tableDataprop: 'status',
1632 width: '50px'
1633 }
1634 ]
1635 },
1636 option1: {
1637 column: [
1638 {
1639 label: '序号',
1640 tableDataprop: 'rowNo',
1641 width: '50px'
1642 },
1643 {
1644 label: '途经',
1645 tableDataprop: 'hospital',
1646 width: '230px'
1647 },
1648 // {
1649 // label: '取样时间',
1650 // tableDataprop: 'dateTime',
1651 // width: '50px'
1652 // },
1653 {
1654 label: '取样数',
1655 tableDataprop: 'pkgs',
1656 width: '50px',
1657 align: 'right'
1658 },
1659 {
1660 label: '状态',
1661 tableDataprop: 'status',
1662 width: '50px'
1663 }
1664 ]
1665 },
1666 option2: {
1667 column: [
1668 {
1669 label: '序号',
1670 tableDataprop: 'rowNo',
1671 width: '50px'
1672 },
1673 {
1674 label: '途经',
1675 tableDataprop: 'hospital',
1676 width: '230px'
1677 },
1678 {
1679 label: '取样数',
1680 tableDataprop: 'pkgs',
1681 width: '50px',
1682 align: 'right'
1683 },
1684 {
1685 label: '状态',
1686 tableDataprop: 'status',
1687 width: '50px'
1688 }
1689 ]
1690 },
1691 option3: {
1692 column: [
1693 {
1694 label: '序号',
1695 tableDataprop: 'rowNo',
1696 width: '50px'
1697 },
1698 {
1699 label: '目标点',
1700 tableDataprop: 'hospital',
1701 width: '200px'
1702 },
1703 {
1704 label: '取样数',
1705 tableDataprop: 'pkgs',
1706 width: '50px',
1707 align: 'right'
1708 },
1709 {
1710 label: '取样时间段',
1711 tableDataprop: 'timeInterval',
1712 width: '80px'
1713 },
1714 {
1715 label: '使用工具',
1716 tableDataprop: 'vehicleType',
1717 width: '50px'
1718 }
1719 ]
1720 }
1721 }
1722 },
1723 computed: {
1724 // ...mapGetters(['order'])
1725 },
1726 watch: {
1727 show: {
1728 handler: function () {
1729 if (!this.show) {
1730 this.checkeData = []
1731 }
1732 },
1733 deep: true,
1734 immediate: true
1735 },
1736 city: {
1737 handler: function (val) {
1738 switch (val) {
1739 case '济南':
1740 this.insertData = this.findDifferentElements(this.orginInsertData[0]?.customerData, this.targetData)
1741 console.log('123333333333', this.insertData)
1742 break
1743 case '德州':
1744 this.insertData = this.findDifferentElements(this.orginInsertData[1]?.customerData, this.targetData)
1745 break
1746 case '聊城':
1747 this.insertData = this.findDifferentElements(this.orginInsertData[2]?.customerData, this.targetData)
1748 break
1749 }
1750 },
1751 deep: true,
1752 immediate: true
1753 }
1754 },
1755 mounted() {
1756 this.$nextTick(() => {
1757 this.city = this.$store.state.app.city
1758 this.targetData = this.$store.getters.getTarget
1759 this.departureData = this.$store.getters.getdepart
1760 // this.curentData = this.$store.getters.getCurentData
1761 this.curentData = JSON.parse(this.$route.query.data)
1762 console.log('curentData', this.curentData)
1763 this.$bus.$on('sortTableData', e => (this.dataList = e))
1764 this.$bus.$on('selecte', e => (this.checkeData = e))
1765 this.$bus.$on('rowData', e => (this.rowData = e))
1766 this.cityIndex = this.cityOptions.findIndex(item => item.label == this.city)
1767 this.index = this.curentData.rowNo - 1
1768 console.log('cityIndex', this.cityIndex)
1769 this.dataList = this.curentData.data
1770 this.dataList.forEach(item => {
1771 item.timeInterval = ''
1772 })
1773 let arr = [...this.filterTable, ...this.dataList]
1774 arr.forEach((item, index) => {
1775 item.rowNo = index + 1
1776 })
1777 })
1778 },
1779 destroyed() {
1780 // this.$bus.$off('selecte')
1781 this.$bus.$off('sortTableData')
1782 },
1783 created() {
1784 this.getSessionId()
1785 this.getDate()
1786 this.$forceUpdate()
1787 },
1788 methods: {
1789 getDate() {
1790 this.date = new Date()
1791 },
1792 adjustTime() {
1793 console.log(this.rowData)
1794 if (!Object.keys(this.rowData).length) {
1795 Toast('请至少选择一条数据')
1796 return
1797 }
1798 this.TimeShow = true
1799 },
1800 async handleChangeTime(action, done) {
1801 if (action === 'confirm') {
1802 // 点击确定走这里
1803 this.rowData.timeInterval = `${this.date1},${this.date2}`
1804 this.orginInsertData[this.cityIndex].customerData.forEach(item => {
1805 if (item.coordinate == this.rowData.coordinate) {
1806 item.timeInterval = this.rowData.timeInterval
1807 }
1808 })
1809 console.log('12131', this.dataList)
1810 done(true)
1811 this.replanning()
1812 } else {
1813 // 点击取消走这里
1814 done(true) // 关闭弹窗, true可以省略
1815 }
1816 },
1817 findDifferentElements(arr1, arr2) {
1818 const diff1 = arr1.filter(obj1 => !arr2.some(obj2 => this.isEqual(obj1, obj2)))
1819 const diff2 = arr2.filter(obj2 => !arr1.some(obj1 => this.isEqual(obj2, obj1)))
1820 return [...diff1, ...diff2]
1821 },
1822 isEqual(obj1, obj2) {
1823 return obj1.hospital === obj2.hospital && obj1.dateTime === obj2.dateTime
1824 },
1825 isnavigation(val) {
1826 let that = this
1827 let myLocation = JSON.parse(sessionStorage.getItem('ownChooseLocation'))
1828 if (this.cabinData.longitude && this.cabinData.latitude) {
1829 let Url = ''
1830 switch (val) {
1831 case 'amap':
1832 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`
1833 break
1834 case 'bmap':
1835 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`
1836 break
1837 }
1838 location.href = Url
1839 } else {
1840 // this.$message({
1841 // message: '请先确认您的起点和终点位置',
1842 // type: 'warning',
1843 // })
1844 }
1845 },
1846 // 请求数据案例
1847 initData(list) {
1848 Toast.loading({
1849 duration: 0
1850 })
1851 // let destinations = arr.map(item => item.coordinate).join(';')
1852 // 请求接口数据,仅作为展示,需要配置src->config下环境文件
1853 console.log('123', list)
1854 // return
1855 let arr = _.cloneDeep(list)
1856 const data = {
1857 region: this.city,
1858 plate: '',
1859 departure: '',
1860 arrival: '',
1861 departureDate: '06:30',
1862 customerData: arr
1863 }
1864 const params = {
1865 method: 'GetRouteMatrix_test',
1866 format: 'json',
1867 sessionId: this.accessToken,
1868 sign: '203EF639BA15A6E001B59DB78AB81470B7893CAF',
1869 appKey: 'dd48c515fcde43bea0b5bd0b8f77e119',
1870 v: '1.0'
1871 }
1872 getPlan(data, params)
1873 .then(res => {
1874 Toast.clear()
1875 let newArr = JSON.parse(res).returnModel
1876 console.log('返回的数据', newArr)
1877 newArr.forEach(item => {
1878 item.data.forEach((e, index) => {
1879 e.distance = e.distance.toFixed(2)
1880 e.hospital = e.returnName
1881 e.status = '未去'
1882 e.coordinate = e.destination
1883 e.isOrigin = 'N'
1884 if (index == item.data.length - 1) {
1885 e.pkgs = 0
1886 } else {
1887 e.pkgs = 100
1888 }
1889 // e.distance.toFixed(2)
1890 })
1891 item.data.pop()
1892 })
1893 this.dataList = newArr[0]?.data
1894 console.log('aaaaa', this.dataList)
1895
1896 let arrs = [...this.filterTable, ...this.dataList]
1897 arrs.forEach((item, index) => {
1898 item.rowNo = index + 1
1899 // this.filterTable[index].rowNo = index
1900 // this.dataList[index].rowNo = index
1901 })
1902 })
1903 .catch(() => {})
1904 },
1905 initData2(list) {
1906 Toast.loading({
1907 duration: 0
1908 })
1909 // let destinations = arr.map(item => item.coordinate).join(';')
1910 // 请求接口数据,仅作为展示,需要配置src->config下环境文件
1911 console.log('123', list)
1912 // return
1913 let arr = _.cloneDeep(list)
1914 arr.forEach((item, index) => {
1915 // if (item.dateTime1) {
1916 // item.dateTime = item.dateTime1
1917 // }
1918 item.rowNo = index + 1
1919 return item
1920 })
1921 const data = {
1922 region: this.city,
1923 plate: '',
1924 departure: '',
1925 arrival: '',
1926 departureDate: this.departureData[this.index].dateTime,
1927 customerData: arr
1928 }
1929 const params = {
1930 method: 'GetRoutePlan_test1',
1931 format: 'json',
1932 sessionId: this.accessToken,
1933 sign: '203EF639BA15A6E001B59DB78AB81470B7893CAF',
1934 appKey: 'dd48c515fcde43bea0b5bd0b8f77e119',
1935 v: '1.0'
1936 }
1937 getPlan2(data, params)
1938 .then(res => {
1939 Toast.clear()
1940 let newArr = JSON.parse(res).data
1941 console.log('返回的数据', newArr)
1942 // if (!this.filterTable.length) {
1943 // newArr.shift()
1944 // }
1945 newArr.shift()
1946 console.log(arr)
1947 let sortedArray = newArr.map(item1 =>
1948 arr.find(item2 => {
1949 if (item2.hospital + item2.dateTime == item1.returnName) {
1950 item2.distance = item1.distance.toFixed(2)
1951 item2.duration = item1.duration
1952 item2.stopTime = item1.stopTime
1953 item2.reachDate = item1.reachDate
1954 item2.leaveDate = item1.leaveDate
1955 item2.status = '未去'
1956 // item2.dateTime1 = _.cloneDeep(item2.dateTime)
1957 // item2.dateTime = item1.timeSlot.replace('-', '<br/>')
1958 return item2
1959 }
1960 })
1961 )
1962 this.dataList = sortedArray
1963 console.log('aaaaa', this.dataList)
1964
1965 let arrs = [...this.filterTable, ...this.dataList]
1966 arrs.forEach((item, index) => {
1967 item.rowNo = index + 1
1968 // this.filterTable[index].rowNo = index
1969 // this.dataList[index].rowNo = index
1970 })
1971 })
1972 .catch(() => {})
1973 },
1974 getSessionId() {
1975 let params = {
1976 client_id: 'dd48c515fcde43bea0b5bd0b8f77e119',
1977 grant_type: 'client_credentials',
1978 client_secret: 'c6602114c9ba488b877d0d84b0e5e700',
1979 scope: 'read'
1980 }
1981 getSession(params, {}).then(res => {
1982 this.accessToken = res.access_token
1983 // this.initData(this.curentData.customerData)
1984 // TODO 调试暂时注释
1985 // this.initData([...this.departureData, ...this.targetData])
1986 })
1987 },
1988 getRadom(arr) {
1989 if (arr.length === 0) {
1990 return
1991 }
1992 return Math.round(Math.random() * (arr.length - 1))
1993 },
1994 // 模拟取样
1995 simulatedSampling() {
1996 // this.getRadom(this.curentData.customerData)
1997 // console.log(this.getRadom(this.dataList))
1998 // this.dataList.forEach(item => (item.status = '未去'))
1999 let newArr = [...this.filterTable, ...this.dataList]
2000 this.filterTable = []
2001 for (let i = 0; i <= newArr.length - 1; i++) {
2002 this.$set(newArr[i], `status`, '未去')
2003 }
2004 var num = this.getRadom(newArr) || 1
2005 console.log(num)
2006 // this.curentData.customerData[this.getRadom(this.curentData.customerData)].status = '已去'
2007 for (let i = 0; i < num; i++) {
2008 this.$set(newArr[i], `status`, '已去')
2009 }
2010 this.filterTable = newArr.filter(item => item.status == '已去')
2011 this.dataList = newArr.filter(item => item.status == '未去')
2012 let arr = [...this.filterTable, ...this.dataList]
2013 arr.forEach((item, index) => {
2014 item.rowNo = index + 1
2015 // this.filterTable[index].rowNo = index
2016 // this.dataList[index].rowNo = index
2017 })
2018 console.log(this.filterTable)
2019 console.log(this.dataList)
2020 },
2021 // 重新规划
2022 replanning() {
2023 let data = []
2024 let departobj = {}
2025 if (this.filterTable.length) {
2026 data = [...this.dataList].map(item1 =>
2027 this.orginInsertData[this.cityIndex].customerData.find(item2 => {
2028 if (item2.coordinate == item1.destination && item2.hospital == item1.hospital) {
2029 return item2
2030 } else if (item2.coordinate == item1.coordinate && item2.hospital == item1.hospital) {
2031 return item2
2032 }
2033 })
2034 )
2035 departobj = _.cloneDeep(this.departureData[this.index])
2036 departobj.hospital = this.filterTable[this.filterTable.length - 1].hospital
2037 departobj.address = this.filterTable[this.filterTable.length - 1].returnName
2038 departobj.dateTime = this.filterTable[this.filterTable.length - 1].leaveDate
2039 departobj.coordinate = this.filterTable[this.filterTable.length - 1].coordinate
2040 } else {
2041 data = [...this.dataList].map(item1 =>
2042 this.orginInsertData[this.cityIndex].customerData.find(item2 => {
2043 if (item2.coordinate == item1.destination && `${item2.hospital}${item2.dateTime}` == item1.returnName) {
2044 return item2
2045 } else if (item2.coordinate == item1.coordinate && item2.hospital == item1.hospital) {
2046 return item2
2047 }
2048 })
2049 )
2050 console.log('数据', this.dataList)
2051 departobj = _.cloneDeep(this.departureData[this.index])
2052 }
2053 this.initData([departobj, ...data])
2054 },
2055 // 调整后规划
2056 replanning2() {
2057 let data = []
2058 let departobj = {}
2059 if (this.filterTable.length) {
2060 data = [...this.dataList].map(item1 =>
2061 this.orginInsertData[this.cityIndex].customerData.find(item2 => {
2062 if (item2.coordinate == item1.destination && `${item2.hospital}${item2.dateTime}` == item1.returnName) {
2063 return item2
2064 } else if (item2.coordinate == item1.coordinate && item2.hospital == item1.hospital) {
2065 return item2
2066 }
2067 })
2068 )
2069 departobj = _.cloneDeep(this.departureData[this.index])
2070 departobj.hospital = this.filterTable[this.filterTable.length - 1].hospital
2071 departobj.address = this.filterTable[this.filterTable.length - 1].returnName
2072 departobj.dateTime = this.filterTable[this.filterTable.length - 1].leaveDate
2073 departobj.coordinate = this.filterTable[this.filterTable.length - 1].destination
2074 } else {
2075 data = [...this.dataList].map(item1 =>
2076 this.orginInsertData[this.cityIndex].customerData.find(item2 => {
2077 if (item2.coordinate == item1.destination && `${item2.hospital}${item2.dateTime}` == item1.returnName) {
2078 return item2
2079 } else if (item2.coordinate == item1.coordinate && item2.hospital == item1.hospital) {
2080 return item2
2081 }
2082 })
2083 )
2084 departobj = _.cloneDeep(this.departureData[this.index])
2085 }
2086 this.initData2([departobj, ...data])
2087 },
2088 // 调整顺序
2089 sequence() {},
2090
2091 insertOrder() {
2092 this.show = true
2093 this.insertType = 0
2094 },
2095 insertOrder1() {
2096 this.show = true
2097 this.insertType = 1
2098 },
2099 openDialog() {
2100 this.checkeData = []
2101 },
2102 async handleInsertOrder(action, done) {
2103 if (action === 'confirm') {
2104 // 点击确定走这里
2105 console.log(this.checkeData)
2106 if (!this.checkeData.length) {
2107 Toast('请至少选择一条数据')
2108 return done(false)
2109 }
2110 this.checkeData.forEach(item => {
2111 item.type = 'new'
2112 item.status = '未去'
2113 if (!this.insertType) {
2114 this.dataList.splice(this.getRadom(this.dataList), 0, item)
2115 } else {
2116 let num = this.getRadom(this.dataList)
2117 this.deleteData = [this.dataList[num]]
2118 this.dataList.splice(num, 1)
2119 this.dataList.splice(this.getRadom(this.dataList), 0, item)
2120 }
2121 })
2122 this.dataList.forEach((item, index) => {
2123 item.rowNo = index + 1
2124 })
2125 done(true)
2126 } else {
2127 // 点击取消走这里
2128 done(true) // 关闭弹窗, true可以省略
2129 }
2130 },
2131 // 模拟插单1
2132 insertSheet1() {
2133 this.judgePerson(1)
2134 let arr = [...this.filterTable, ...this.dataList]
2135 arr.forEach((item, index) => {
2136 item.rowNo = index + 1
2137 })
2138 },
2139 // 模拟插单2
2140 insertSheet2() {
2141 let num = this.getRadom(this.dataList)
2142 this.deleteData = [this.dataList[num]]
2143 this.dataList.splice(num, 1)
2144 this.judgePerson(2)
2145 let arr = [...this.filterTable, ...this.dataList]
2146 arr.forEach((item, index) => {
2147 item.rowNo = index + 1
2148 // this.filterTable[index].rowNo = index
2149 // this.dataList[index].rowNo = index
2150 })
2151 },
2152 judgePerson(type) {
2153 // this.dataList.splice(this.getRadom(this.dataList), 0,)
2154 // array.splice(array.length,0,6,8,9);//第二个参数为0的时候,是可以添加参数的,1的时候是删除
2155 if (this.curentData.name == '田耀中') {
2156 if (type == 1) {
2157 this.dataList.splice(this.getRadom(this.dataList), 0, {
2158 rowNo: [...this.dataList, ...this.filterTable].length + 1,
2159 hospital: '聊城市东昌府区妇幼保健院(两癌)',
2160 address: '山东省聊城市东昌府区振兴西路129号',
2161 dateTime: '16:40',
2162 stopTime: 50,
2163 adcode: '340100',
2164 batch: '1',
2165 pkgs: 100,
2166 type: 'new',
2167 coordinate: '115.95710000,36.46834600',
2168 status: '未去'
2169 })
2170 } else {
2171 this.dataList.splice(this.getRadom(this.dataList), 0, {
2172 rowNo: [...this.dataList, ...this.filterTable].length + 1,
2173 hospital: '聊城市茌平区洪官屯镇卫生院',
2174 address: '聊城市茌平区洪官屯镇政府驻地',
2175 dateTime: '15:47',
2176 stopTime: 15,
2177 adcode: '340100',
2178 batch: '1',
2179 pkgs: 100,
2180 type: 'new',
2181 coordinate: '116.06041900,36.39670700',
2182 status: '未去'
2183 })
2184 }
2185 } else if (this.curentData.name == '路飞') {
2186 if (type == 1) {
2187 this.dataList.splice(this.getRadom(this.dataList), 0, {
2188 rowNo: [...this.dataList, ...this.filterTable].length + 1,
2189 hospital: '德州市立医院',
2190 address: '山东省德州市德城区三八路1766号',
2191 dateTime: '12:55',
2192 adcode: '340100',
2193 stopTime: 90,
2194 pkgs: 2,
2195 batch: '1',
2196 type: 'new',
2197 coordinate: '116.29370300,37.45320200',
2198 status: '未去'
2199 })
2200 } else {
2201 this.dataList.splice(this.getRadom(this.dataList), 0, {
2202 rowNo: [...this.dataList, ...this.filterTable].length + 1,
2203 hospital: '德棉医院',
2204 address: '德州市运河开发区纺织大街522号',
2205 dateTime: '14:37',
2206 stopTime: 20,
2207 adcode: '340100',
2208 batch: '1',
2209 pkgs: 0,
2210 type: 'new',
2211 coordinate: '116.27572300,37.45761700',
2212 status: '未去'
2213 })
2214 }
2215 } else if (this.curentData.name == '王东') {
2216 if (type == 1) {
2217 this.dataList.splice(this.getRadom(this.dataList), 0, {
2218 rowNo: [...this.dataList, ...this.filterTable].length + 1,
2219 hospital: '武警山东总队医院',
2220 address: '山东省济南市历下区浆水泉路12--8号',
2221 dateTime: '14:45',
2222 adcode: '340100',
2223 batch: '1',
2224 stopTime: 15,
2225 pkgs: 100,
2226 type: 'new',
2227 coordinate: '117.08718600,36.65631700',
2228 status: '未去'
2229 })
2230 } else {
2231 this.dataList.splice(this.getRadom(this.dataList), 0, {
2232 rowNo: [...this.dataList, ...this.filterTable].length + 1,
2233 hospital: '济南汇安健康管理有限公司历下门诊部',
2234 address: '济南市历下区文化西路15号',
2235 dateTime: '12:05',
2236 batch: '1',
2237 stopTime: 120,
2238 adcode: '340100',
2239 pkgs: 100,
2240 type: 'new',
2241 coordinate: '117.03081400,36.65417800',
2242 status: '未去'
2243 })
2244 }
2245 } else if (this.curentData.name == '尹逊武') {
2246 if (type == 1) {
2247 this.dataList.splice(this.getRadom(this.dataList), 0, {
2248 rowNo: [...this.dataList, ...this.filterTable].length + 1,
2249 batch: '1',
2250 hospital: '山东省中医院(西院)',
2251 address: '山东省济南市文化西路42号',
2252 dateTime: '09:00,12:00',
2253 stopTime: 30,
2254 pkgs: 100,
2255 coordinate: '117.02325300,36.65510600',
2256 type: 'new',
2257 status: '未去'
2258 })
2259 } else {
2260 this.dataList.splice(this.getRadom(this.dataList), 0, {
2261 rowNo: [...this.dataList, ...this.filterTable].length + 1,
2262 batch: '1',
2263 hospital: '山东省千佛山医院',
2264 address: '经十路山师东路',
2265 dateTime: '13:40',
2266 stopTime: 20,
2267 pkgs: 100,
2268 coordinate: '117.04485100,36.64754900',
2269 type: 'new',
2270 status: '未去'
2271 })
2272 }
2273 } else {
2274 if (this.curentData.batch == '第一批') {
2275 this.dataList.splice(this.getRadom(this.dataList), 0, {
2276 rowNo: [...this.dataList, ...this.filterTable].length + 1,
2277 batch: '1',
2278 hospital: '济南样本室对接点',
2279 address: '济南市历下区颖秀路2755号',
2280 dateTime: '19:45',
2281 stopTime: 10,
2282 pkgs: '-',
2283 coordinate: '117.13394400,36.67904500',
2284 type: 'new',
2285 status: '未去'
2286 })
2287 } else {
2288 this.dataList.splice(this.getRadom(this.dataList), 0, {
2289 rowNo: [...this.dataList, ...this.filterTable].length + 1,
2290 batch: '2',
2291 hospital: '济南长途汽车总站对接点',
2292 address: '济南市天桥区济洛路131号',
2293 dateTime: '21:45',
2294 stopTime: 15,
2295 pkgs: '-',
2296 coordinate: '116.99360600,36.68543900',
2297 type: 'new',
2298 status: '未去'
2299 })
2300 }
2301 }
2302 },
2303 nextOrder() {
2304 if (this.index == this.allReturnData.length - 1) {
2305 Toast.fail('已经是最后一条')
2306 return
2307 }
2308 this.index++
2309 this.filterTable = []
2310 this.deleteData = []
2311 this.dataList = this.allReturnData[this.index]?.data
2312 this.replaceRowNo()
2313 },
2314 lastOrder() {
2315 if (this.index == 0) {
2316 Toast.fail('已经是第一条')
2317 return
2318 }
2319 this.index--
2320 this.filterTable = []
2321 this.deleteData = []
2322 this.dataList = this.allReturnData[this.index]?.data
2323 this.replaceRowNo()
2324 },
2325 replaceRowNo() {
2326 this.dataList.forEach((item, index) => {
2327 item.rowNo = index + 1
2328 })
2329 },
2330 // 开启导航
2331 EnableNavigation() {
2332 console.log(this.dataList)
2333 // this.dataList.map(item => item.coordinate).join(';')
2334 this.dataList.map(item => item.coordinate)
2335 let arr = []
2336 if (!this.filterTable.length) {
2337 arr = [this.departureData[this.index], ...this.dataList.filter(item => item.status == '未去')]
2338 } else {
2339 arr = [this.filterTable[this.filterTable.length - 1], ...this.dataList.filter(item => item.status != '已去')]
2340 }
2341 let obj = {
2342 // 起点
2343 startingPoint: arr[0].coordinate,
2344 startingName: arr[0].hospital,
2345 // 终点
2346 terminus: this.curentData.coordinate,
2347 terminusName: this.curentData.arrival
2348
2349 // 途经点
2350 // 116.402796,39.936915
2351 // pointOfPassage: `${this.dataList.map(item => item.coordinate).join('|')},midwaypoint`
2352 }
2353 // console.log(obj)
2354 let url = ''
2355 arr.forEach((item, index) => {
2356 if (index > 0 && index < arr.length) {
2357 url +=
2358 `&via[${index - 1}][adcode]=${item.adcode}` +
2359 `&via[${index - 1}][id]` +
2360 `&via[${index - 1}][lnglat]=${item.coordinate}` +
2361 `&via[${index - 1}][modxy]=${item.coordinate}` +
2362 `&via[${index - 1}][name]=${item.hospital}` +
2363 `&via[${index - 1}][poitype]`
2364 }
2365 })
2366 let aurl = arr.forEach((item, index) => {
2367 if (index > 0 && index < arr.length - 1) {
2368 url += `&via[${index - 1}]=${item.coordinate},${item.hospital}`
2369 }
2370 })
2371 console.log('123', url)
2372
2373 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}`
2374 console.log(this.mapUrl)
2375 window.open(this.mapUrl)
2376 // location.assign(this.mapUrl)
2377 let a = `https://uri.amap.com/navigation?from=${this.dataList[0].coordinate},${this.dataList[0].hospital}
2378 &to=${this.curentData.coordinate},${this.curentData.departure}
2379 &via=${aurl}
2380 &mode=car
2381 &callnative=1
2382 &src=mypage
2383 &policy=1
2384 &coordinate=gaode
2385 &callnative`
2386 console.log(a)
2387 // window.open(a)
2388 // location.href = `https://uri.amap.com/navigation?
2389 // from=${this.dataList[0].coordinate}
2390 // &to=${this.dataList[0].coordinate}
2391 // &via=${this.dataList.map(item => item.coordinate).join(';')}
2392 // &mode=car&policy=1&coordinate=gaode&callnative=1`
2393 }
2394 }
2395 }
2396 </script>
2397
2398 <style lang="scss" scoped>
2399 .title {
2400 padding: 10px;
2401 }
2402
2403 .header-text {
2404 font-size: 24px;
2405 font-weight: 800;
2406 }
2407
2408 .table-box {
2409 margin: 12px 0px;
2410
2411 .th-row {
2412 height: 56px;
2413 line-height: 56px;
2414 background: #ebf1f7;
2415 padding: 0px 12px;
2416 font-size: 36px;
2417 }
2418
2419 .tb-row {
2420 font-size: 48px;
2421 height: 56px;
2422 line-height: 56px;
2423 padding: 0px 12px;
2424 }
2425 }
2426
2427 .fixed-bottom-right {
2428 // position: fixed;
2429 margin-top: 80px;
2430 bottom: 20px;
2431 right: 0px;
2432 width: 100%;
2433 }
2434 </style>
1 <template>
2 <div>
3 <div class="title">
4 <div>出发列表</div>
5 <van-row type="flex" style="margin-top: 15px" justify="space-around">
6 <van-col span="24" class="header-text" style="display: flex">
7 <!-- <van-datetime-picker v-model="currentData.departureDate" type="time" title="选择时间" /> -->
8 <van-cell-group>
9 <!-- <van-field v-model="currentData.departureDate" label="出发时间" placeholder="请输入出发时间" /> -->
10 城市:
11 <select name="pets" id="pet-select" v-model="city" class="city" @change="cityChage($event)">
12 <option v-for="item in cityOptions" :key="item.value" :value="item.value">{{ item.label }}</option>
13 </select>
14 </van-cell-group>
15 <!-- 出发时间:<van-field v-model="currentData.departureDate" size="small" placeholder="请输入时间" /> -->
16 </van-col>
17 </van-row>
18 </div>
19 <Table-vant :option="option" :tableData="currentData" :showCheck="true">
20 <template v-slot:dateTime="{ item }">
21 <input type="text" v-model="item.dateTime" style="width: 80%; height: 25px" />
22 </template>
23 <template v-slot:vehicleType="{ item }">
24 <div>{{ item.vehicleType == 1 ? '电动汽车' : '电动车' }}</div>
25 </template>
26 </Table-vant>
27 <div class="fixed-bottom-right">
28 <div style="display: flex; flex-direction: row-reverse; margin-top: 10px">
29 <van-button round plain type="primary" @click="nextStep">下一步</van-button>
30 </div>
31 </div>
32 </div>
33 </template>
34
35 <script>
36 import TableVant from '@/components/Table.vue'
37 import { Toast } from 'vant'
38 import _ from 'lodash'
39 export default {
40 components: { TableVant },
41 data() {
42 return {
43 index: 0,
44 date: '',
45 cloneData: {},
46 checkeData: [],
47 city: '济南',
48 currentData: [],
49 cityOptions: [
50 { label: '济南', value: '济南' },
51 { label: '德州', value: '德州' },
52 { label: '聊城', value: '聊城' }
53 ],
54 option: {
55 column: [
56 {
57 label: '序号',
58 tableDataprop: 'rowNo',
59 width: '50px',
60 align: 'center'
61 },
62 {
63 label: '出发点',
64 tableDataprop: 'hospital',
65 width: '230px'
66 },
67 {
68 label: '取件人',
69 tableDataprop: 'name',
70 width: '50px'
71 },
72 {
73 label: '出发时间',
74 tableDataprop: 'dateTime',
75 width: '80px'
76 },
77 {
78 label: '使用工具',
79 tableDataprop: 'vehicleType',
80 width: '80px'
81 }
82 ]
83 },
84 // orginData: [
85 // {
86 // name: '王东',
87 // plate: '鲁A73HU8',
88 // departure: '济南迪安中心办事处',
89 // arrival: '济南样本室对接点',
90 // departureDate: '07:30',
91 // customerData: [
92 // {
93 // rowNo: '1',
94 // batch: '1',
95 // hospital: '济南迪安中心办事处',
96 // address: '济南市高新区颖秀路2755号',
97 // dateTime: '6:30',
98 // stopTime: 15,
99 // pkgs: '-',
100 // coordinate: '117.13394400,36.67904500'
101 // },
102 // {
103 // rowNo: '3',
104 // batch: '1',
105 // hospital: '济南西站对接点',
106 // address: '济南市槐荫区齐鲁大道6号',
107 // dateTime: '7:50',
108 // stopTime: 20,
109 // pkgs: '-',
110 // coordinate: '116.89177900,36.66887900'
111 // },
112 // {
113 // rowNo: '5',
114 // batch: '1',
115 // hospital: '山东第一医科大学附属皮肤病医院',
116 // address: '济南市经十路27397号',
117 // dateTime: '9:30',
118 // stopTime: 10,
119 // pkgs: 100,
120 // coordinate: '116.92826100,36.65210900'
121 // },
122 // {
123 // rowNo: '7',
124 // batch: '1',
125 // hospital: '市中慢病第四人民医院青龙山分院',
126 // address: '山东省济南市市中区南辛庄西路272号',
127 // dateTime: '10:20',
128 // stopTime: 40,
129 // pkgs: 100,
130 // coordinate: '116.95988200,36.62819100'
131 // },
132 // {
133 // rowNo: '8',
134 // batch: '1',
135 // hospital: '山东省医学科学院放射医学研究所',
136 // address: '济南经十路89号9956',
137 // dateTime: '11:15',
138 // stopTime: 15,
139 // pkgs: 100,
140 // coordinate: '117.01788200,36.64911300'
141 // },
142 // {
143 // rowNo: '9',
144 // batch: '1',
145 // hospital: '山东省分析测试中心',
146 // address: '山东省济南市历下区科院路19号详情',
147 // dateTime: '11:40',
148 // stopTime: 10,
149 // pkgs: 100,
150 // coordinate: '117.04783900,36.64556100'
151 // },
152 // {
153 // rowNo: '10',
154 // batch: '1',
155 // hospital: '济南样本室对接点',
156 // address: '济南市历下区颖秀路2755号',
157 // dateTime: '15:20',
158 // stopTime: 30,
159 // pkgs: 100,
160 // coordinate: '117.13394400,36.67904500'
161 // }
162 // ]
163 // },
164 // {
165 // name: '路飞',
166 // plate: '德州1333887',
167 // departure: '德州办事处',
168 // arrival: '德州办事处',
169 // departureDate: '08:30',
170 // customerData: [
171 // {
172 // rowNo: '1',
173 // batch: '1',
174 // hospital: '德州办事处',
175 // address: '德州市德城区世纪嘉园小区',
176 // dateTime: '8:40',
177 // stopTime: 20,
178 // pkgs: '-',
179 // coordinate: '116.33733900,37.42873700'
180 // },
181 // {
182 // rowNo: '2',
183 // batch: '1',
184 // hospital: '德州交通医院',
185 // address: '德城区东风中路389号',
186 // dateTime: '9:15',
187 // stopTime: 20,
188 // pkgs: 2,
189 // coordinate: '116.31887300,37.44295900'
190 // },
191 // {
192 // rowNo: '3',
193 // batch: '1',
194 // hospital: '德州市人民医院',
195 // address: '德州市新湖大街1751号',
196 // dateTime: '9:47',
197 // stopTime: 100,
198 // pkgs: 41,
199 // coordinate: '116.30555600,37.45116400'
200 // },
201 // {
202 // rowNo: '4',
203 // batch: '1',
204 // hospital: '德州市人民医院(特检)',
205 // address: '德州市新湖大街1751号',
206 // dateTime: '11:32',
207 // stopTime: 15,
208 // pkgs: 1,
209 // coordinate: '116.30555600,37.45116400'
210 // },
211 // {
212 // rowNo: '5',
213 // batch: '1',
214 // hospital: '德州市立医院对接点',
215 // address: '德州市德城区三八中路1766号',
216 // dateTime: '11:55',
217 // stopTime: 20,
218 // pkgs: '-',
219 // coordinate: '116.29370300,37.45320200'
220 // },
221 // // {
222 // // rowNo: '6',
223 // // batch: '1',
224 // // hospital: '德州市立医院',
225 // // address: '山东省德州市德城区三八路1766号',
226 // // dateTime: '12:55',
227 // // stopTime: 90,
228 // // pkgs: 2,
229 // // coordinate: '116.29370300,37.45320200'
230 // // },
231 // // {
232 // // rowNo: '7',
233 // // batch: '1',
234 // // hospital: '德棉医院',
235 // // address: '德州市运河开发区纺织大街522号',
236 // // dateTime: '14:37',
237 // // stopTime: 20,
238 // // pkgs: "-",
239 // // coordinate: '116.27572300,37.45761700'
240 // // },
241 // {
242 // rowNo: '8',
243 // batch: '1',
244 // hospital: '德州汽车站对接点',
245 // address: '德州市德城区东风路1667号',
246 // dateTime: '15:12',
247 // stopTime: 15,
248 // pkgs: '-',
249 // coordinate: '116.29082500,37.44405800'
250 // },
251 // {
252 // rowNo: '9',
253 // batch: '1',
254 // hospital: '德州办事处',
255 // address: '德州市德城区世纪嘉园小区',
256 // dateTime: '15:52',
257 // stopTime: 20,
258 // pkgs: '-',
259 // coordinate: '116.33733900,37.42873700'
260 // }
261 // ]
262 // },
263 // {
264 // name: '田耀中',
265 // plate: '鲁A790Z9',
266 // departure: '聊城联络处',
267 // arrival: '聊城联络处对接点',
268 // departureDate: '09:30',
269 // customerData: [
270 // {
271 // rowNo: '1',
272 // batch: '1',
273 // hospital: '聊城联络处',
274 // address: '山东省聊城市东昌府区',
275 // dateTime: '8:00',
276 // stopTime: 10,
277 // pkgs: '-',
278 // coordinate: '115.98849100,36.43464500'
279 // },
280 // {
281 // rowNo: '2',
282 // batch: '1',
283 // hospital: '聊城市东昌府区侯营镇卫生院',
284 // address: '山东省聊城市东昌府区侯营镇侯营村',
285 // dateTime: '8:35',
286 // stopTime: 10,
287 // pkgs: 100,
288 // coordinate: '115.88725200,36.39946400'
289 // },
290 // {
291 // rowNo: '3',
292 // batch: '1',
293 // hospital: '聊城市东昌府区和光诊所',
294 // address: '山东省聊城市东昌府区柳园街道陈口路金柱大学城A区30幢s30-113号商铺',
295 // dateTime: '9:12',
296 // stopTime: 10,
297 // pkgs: 100,
298 // coordinate: '116.01666300,36.44393800'
299 // },
300 // {
301 // rowNo: '4',
302 // batch: '1',
303 // hospital: '聊城市东昌府区韩集镇卫生院',
304 // address: '山东省聊城市东昌府区韩集镇政府',
305 // dateTime: '9:55',
306 // stopTime: 10,
307 // pkgs: 100,
308 // coordinate: '116.18228000,36.40897800'
309 // },
310 // {
311 // rowNo: '5',
312 // batch: '1',
313 // hospital: '茌平万里行中医诊所',
314 // address: '聊城市茌平县建设路1416号',
315 // dateTime: '10:40',
316 // stopTime: 10,
317 // pkgs: 100,
318 // coordinate: '116.21077700,36.56289800'
319 // },
320 // {
321 // rowNo: '6',
322 // batch: '1',
323 // hospital: '聊城市茌平区人民医院',
324 // address: '聊城市茌平县文化路99号',
325 // dateTime: '11:00',
326 // stopTime: 15,
327 // pkgs: 100,
328 // coordinate: '116.24962100,36.57960700'
329 // },
330 // {
331 // rowNo: '7',
332 // batch: '1',
333 // hospital: '聊城市茌平区中医医院',
334 // address: '聊城市茌平区新政西路1163号',
335 // dateTime: '11:22',
336 // stopTime: 30,
337 // pkgs: 100,
338 // coordinate: '116.24271400,36.58568300'
339 // },
340 // {
341 // rowNo: '8',
342 // batch: '1',
343 // hospital: '茌平县和睦家妇科诊所',
344 // address: '茌平县三产院内',
345 // dateTime: '12:22',
346 // stopTime: 5,
347 // pkgs: 100,
348 // coordinate: '116.23697900,36.58427100'
349 // },
350 // {
351 // rowNo: '9',
352 // batch: '1',
353 // hospital: '聊城市茌平区温陈街道社区卫生服务中心',
354 // address: '聊城市茌平区温陈街道',
355 // dateTime: '12:47',
356 // stopTime: 5,
357 // pkgs: 100,
358 // coordinate: '116.24984700,36.59027400'
359 // },
360 // {
361 // rowNo: '10',
362 // batch: '1',
363 // hospital: '聊城市茌平区胡屯镇卫生院',
364 // address: '聊城市茌平区新政西路1163号',
365 // dateTime: '13:12',
366 // stopTime: 10,
367 // pkgs: 100,
368 // coordinate: '116.24271400,36.58568300'
369 // },
370 // {
371 // rowNo: '11',
372 // batch: '1',
373 // hospital: '高唐县中医院',
374 // address: '高唐县东兴路16号',
375 // dateTime: '13:52',
376 // stopTime: 10,
377 // pkgs: 100,
378 // coordinate: '116.25357800,36.85772200'
379 // },
380 // {
381 // rowNo: '12',
382 // batch: '1',
383 // hospital: '高唐县人民医院',
384 // address: '山东省高唐县金城西路99号',
385 // dateTime: '14:17',
386 // stopTime: 15,
387 // pkgs: 100,
388 // coordinate: '116.22798600,36.86687600'
389 // },
390 // {
391 // rowNo: '13',
392 // batch: '1',
393 // hospital: '聊城市茌平区第二人民医院',
394 // address: '茌平县博平镇政府街',
395 // dateTime: '15:04',
396 // stopTime: 15,
397 // pkgs: 100,
398 // coordinate: '116.11760000,36.58789400'
399 // },
400 // // {
401 // // rowNo: '14',
402 // // batch: '1',
403 // // hospital: '聊城市茌平区洪官屯镇卫生院',
404 // // address: '聊城市茌平区洪官屯镇政府驻地',
405 // // dateTime: '15:47',
406 // // stopTime: 15,
407 // // pkgs: 100,
408 // // coordinate: '116.06041900,36.39670700'
409 // // },
410 // {
411 // rowNo: '15',
412 // batch: '1',
413 // hospital: '聊城汽车总站对接点',
414 // address: '聊城市东昌府区建设路与柳园北路交汇处西北角',
415 // dateTime: '16:22',
416 // stopTime: 8,
417 // pkgs: '-',
418 // coordinate: '115.98847500,36.47286500'
419 // },
420 // // {
421 // // rowNo: '16',
422 // // batch: '1',
423 // // hospital: '聊城市东昌府区妇幼保健院(两癌)',
424 // // address: '山东省聊城市东昌府区振兴西路129号',
425 // // dateTime: '16:40',
426 // // stopTime: 50,
427 // // pkgs: 100,
428 // // coordinate: '115.95710000,36.46834600'
429 // // },
430 // {
431 // rowNo: '17',
432 // batch: '1',
433 // hospital: '聊城联络处',
434 // address: '山东省聊城市东昌府区',
435 // dateTime: '17:43',
436 // stopTime: 30,
437 // pkgs: '-',
438 // coordinate: '115.98849100,36.43464500'
439 // },
440 // {
441 // rowNo: '18',
442 // batch: '1',
443 // hospital: '聊城联络处对接点',
444 // address: '山东省聊城市东昌府区',
445 // dateTime: '18:18',
446 // stopTime: 20,
447 // pkgs: '-',
448 // coordinate: '115.98849100,36.43464500'
449 // }
450 // ]
451 // },
452 // {
453 // name: '尹逊武',
454 // plate: '济南2595139',
455 // departure: '尹逊武家',
456 // arrival: '尹逊武家',
457 // departureDate: '06:30',
458 // customerData: [
459 // {
460 // rowNo: '1',
461 // batch: '1',
462 // hospital: '尹逊武家',
463 // address: '山东省济南市历城区北园大街57号',
464 // dateTime: '7:30',
465 // stopTime: 30,
466 // pkgs: 0,
467 // coordinate: '117.05366200,36.69689900'
468 // },
469 // {
470 // rowNo: '2',
471 // batch: '1',
472 // hospital: '山东大学齐鲁医院',
473 // address: '济南市文化西路107号',
474 // dateTime: '8:50',
475 // stopTime: 190,
476 // pkgs: 100,
477 // coordinate: '117.01839000,36.65659000'
478 // },
479 // // {
480 // // rowNo: '3',
481 // // batch: '1',
482 // // hospital: '山东省中医院(西院)',
483 // // address: '山东省济南市文化西路42号',
484 // // dateTime: '11:25',
485 // // stopTime: 30,
486 // // pkgs: 100,
487 // // coordinate: '117.02325300,36.65510600'
488 // // },
489 // {
490 // rowNo: '4',
491 // batch: '1',
492 // hospital: '济南市中医医院1',
493 // address: '山东省济南市槐荫区美里路555号海那城总部24号楼101单元401',
494 // dateTime: '12:05',
495 // stopTime: 30,
496 // pkgs: 100,
497 // coordinate: '116.91984000,36.72078200'
498 // },
499 // {
500 // rowNo: '5',
501 // batch: '1',
502 // hospital: '济南丽合医疗美容医院有限公司',
503 // address: '山东省济南市历下区黑虎泉北路61号',
504 // dateTime: '13:15',
505 // stopTime: 10,
506 // pkgs: 100,
507 // coordinate: '117.03587900,36.67266400'
508 // },
509 // // {
510 // // rowNo: '6',
511 // // batch: '1',
512 // // hospital: '山东省千佛山医院',
513 // // address: '经十路山师东路',
514 // // dateTime: '13:40',
515 // // stopTime: 20,
516 // // pkgs: 100,
517 // // coordinate: '117.04485100,36.64754900'
518 // // },
519 // {
520 // rowNo: '7',
521 // batch: '1',
522 // hospital: '山东第一医科大学第一附属医院',
523 // address: '山东省济南市历下区经十路16766号',
524 // dateTime: '14:05',
525 // stopTime: 20,
526 // pkgs: 100,
527 // coordinate: '117.04244800,36.64765800'
528 // },
529 // {
530 // rowNo: '8',
531 // batch: '1',
532 // hospital: '山东大学齐鲁医院',
533 // address: '济南市文化西路107号',
534 // dateTime: '14:40',
535 // stopTime: 140,
536 // pkgs: 100,
537 // coordinate: '117.01839000,36.65659000'
538 // },
539 // {
540 // rowNo: '9',
541 // batch: '1',
542 // hospital: '济南长途汽车总站对接点',
543 // address: '济南市天桥区济洛路131号',
544 // dateTime: '17:25',
545 // stopTime: 15,
546 // pkgs: 0,
547 // coordinate: '116.99360600,36.68543900'
548 // },
549 // {
550 // rowNo: '10',
551 // batch: '1',
552 // hospital: '尹逊武家',
553 // address: '山东省济南市历城区北园大街57号',
554 // dateTime: '18:10',
555 // stopTime: 5,
556 // pkgs: 0,
557 // coordinate: '117.05366200,36.69689900'
558 // }
559 // ]
560 // },
561 // {
562 // name: '孙天麟',
563 // plate: '鲁A2Q3C2',
564 // departure: '济南迪安中心办事处',
565 // arrival: '济南样本室对接点',
566 // departureDate: '09:30',
567 // customerData: [
568 // {
569 // rowNo: '1',
570 // batch: '1',
571 // hospital: '济南迪安中心办事处',
572 // address: '济南市高新区颖秀路2755号',
573 // dateTime: '14:00',
574 // stopTime: 30,
575 // pkgs: '-',
576 // coordinate: '117.13394400,36.67904500'
577 // },
578 // {
579 // rowNo: '2',
580 // batch: '1',
581 // hospital: '济南佰年颐堂中医医院有限公司',
582 // address: '山东省济南市历城区工业北路180号院内办公楼2号楼1层',
583 // dateTime: '14:55',
584 // stopTime: 10,
585 // pkgs: 100,
586 // coordinate: '117.26118400,36.63685400'
587 // },
588 // // {
589 // // rowNo: '3',
590 // // batch: '1',
591 // // hospital: '山东元辰生物医药科技集团有限公司',
592 // // address: '华山街道丑父路135号华山片区安置区二区S3号楼商业区四层',
593 // // dateTime: '15:20',
594 // // stopTime: 10,
595 // // pkgs: 100,
596 // // coordinate: '117.06162300,36.68773700'
597 // // },
598 // // {
599 // // rowNo: '4',
600 // // batch: '1',
601 // // hospital: '山东大学第二医院(检验科)',
602 // // address: '山东大学第二医院(检验科)',
603 // // dateTime: '15:50',
604 // // stopTime: 30,
605 // // pkgs: 100,
606 // // coordinate: '117.04054100,36.69042100'
607 // // },
608 // {
609 // rowNo: '5',
610 // batch: '1',
611 // hospital: '山东省立第三医院',
612 // address: '山东省济南市无影山中路12号',
613 // dateTime: '16:40',
614 // stopTime: 60,
615 // pkgs: 100,
616 // coordinate: '116.98967800,36.68406100'
617 // },
618 // {
619 // rowNo: '6',
620 // batch: '1',
621 // hospital: '济南长途汽车总站对接点',
622 // address: '济南市天桥区济洛路131号',
623 // dateTime: '17:45',
624 // stopTime: 60,
625 // pkgs: '-',
626 // coordinate: '116.99360600,36.68543900'
627 // },
628 // // {
629 // // rowNo: '7',
630 // // batch: '1',
631 // // hospital: '济南样本室对接点',
632 // // address: '济南市历下区颖秀路2755号',
633 // // dateTime: '19:45',
634 // // stopTime: 10,
635 // // pkgs: '-',
636 // // coordinate: '117.13394400,36.67904500'
637 // // },
638 // {
639 // rowNo: '8',
640 // batch: '2',
641 // hospital: '艾迪康',
642 // address: '济南市天桥区田家庄东路4号',
643 // dateTime: '20:45',
644 // stopTime: 5,
645 // pkgs: 100,
646 // coordinate: '116.97534100,36.69010900'
647 // },
648 // {
649 // rowNo: '9',
650 // batch: '2',
651 // hospital: '济南西站对接点',
652 // address: '济南市槐荫区齐鲁大道6号',
653 // dateTime: '21:10',
654 // stopTime: 15,
655 // pkgs: '-',
656 // coordinate: '116.89177900,36.66887900'
657 // },
658 // // {
659 // // rowNo: '10',
660 // // batch: '2',
661 // // hospital: '济南长途汽车总站对接点',
662 // // address: '济南市天桥区济洛路131号',
663 // // dateTime: '21:45',
664 // // stopTime: 15,
665 // // pkgs: '-',
666 // // coordinate: '116.99360600,36.68543900'
667 // // },
668 // {
669 // rowNo: '11',
670 // batch: '2',
671 // hospital: '济南样本室对接点',
672 // address: '济南市历下区颖秀路2755号',
673 // dateTime: '22:40',
674 // stopTime: 10,
675 // pkgs: '-',
676 // coordinate: '117.13394400,36.67904500'
677 // }
678 // ]
679 // }
680 // ]
681 DepartureList: [
682 {
683 name: '',
684 plate: '',
685 departure: '',
686 arrival: '',
687 departureDate: '06:30',
688 customerData: [
689 {
690 rowNo: '1',
691 batch: '1',
692 hospital: '济南迪安中心办事处(王东)',
693 address: '济南市高新区颖秀路2755号',
694 dateTime: '06:30',
695 stopTime: 15,
696 pkgs: 0,
697 coordinate: '117.13394400,36.67904500',
698 isOrigin: 'Y',
699 vehicleType: '1',
700 timeInterval: '',
701 name: '王东',
702 plate: '鲁A73HU8'
703 },
704 {
705 rowNo: '1',
706 batch: '1',
707 hospital: '尹逊武家',
708 address: '山东省济南市历城区北园大街57号',
709 dateTime: '07:30',
710 stopTime: 30,
711 pkgs: 0,
712 coordinate: '117.05366200,36.69689900',
713 isOrigin: 'Y',
714 vehicleType: '2',
715 timeInterval: '',
716 name: '尹逊武',
717 plate: '济南2595139'
718 },
719 {
720 rowNo: '1',
721 batch: '1',
722 hospital: '贾超家',
723 address: '山东省济南市天桥区堤口路92号',
724 dateTime: '07:30',
725 stopTime: 40,
726 pkgs: 0,
727 coordinate: '116.96820700,36.67044400',
728 isOrigin: 'Y',
729 vehicleType: '2',
730 timeInterval: '',
731 name: '贾超',
732 plate: '济南2387803'
733 },
734 {
735 rowNo: '1',
736 batch: '1',
737 hospital: '济南迪安中心办事处(闫东梅)',
738 address: '济南市高新区颖秀路2755号',
739 dateTime: '08:20',
740 stopTime: 30,
741 pkgs: 0,
742 coordinate: '117.13394400,36.67904500',
743 isOrigin: 'Y',
744 vehicleType: '2',
745 timeInterval: '',
746 name: '闫东梅',
747 plate: '济南2566793'
748 },
749 {
750 rowNo: '1',
751 batch: '1',
752 hospital: '王杰杰家',
753 address: '山东省济南市济阳区纬三路',
754 dateTime: '08:30',
755 stopTime: 10,
756 pkgs: 0,
757 coordinate: '117.19164300,36.97907100',
758 isOrigin: 'Y',
759 vehicleType: '2',
760 timeInterval: '',
761 name: '王杰杰',
762 plate: '济南1830603'
763 },
764 {
765 rowNo: '1',
766 batch: '1',
767 hospital: '济南迪安中心办事处(王斌)',
768 address: '济南市高新区颖秀路2755号',
769 dateTime: '10:00',
770 stopTime: 30,
771 pkgs: 0,
772 coordinate: '117.13394400,36.67904500',
773 isOrigin: 'Y',
774 vehicleType: '1',
775 timeInterval: '',
776 name: '王斌',
777 plate: '鲁A6E5U6'
778 },
779 {
780 rowNo: '1',
781 batch: '1',
782 hospital: '济南迪安中心办事处(郝建振)',
783 address: '济南市高新区颖秀路2755号',
784 dateTime: '10:00',
785 stopTime: 20,
786 pkgs: 0,
787 coordinate: '117.13394400,36.67904500',
788 isOrigin: 'Y',
789 vehicleType: '1',
790 timeInterval: '',
791 name: '郝建振',
792 plate: '鲁A257TR'
793 },
794 {
795 rowNo: '1',
796 batch: '1',
797 hospital: '济南迪安中心办事处(孙天麟)',
798 address: '济南市高新区颖秀路2755号',
799 dateTime: '14:00',
800 stopTime: 30,
801 pkgs: 0,
802 coordinate: '117.13394400,36.67904500',
803 isOrigin: 'Y',
804 vehicleType: '1',
805 timeInterval: '',
806 name: '孙天麟',
807 plate: '鲁A2Q3C2'
808 }
809 ]
810 },
811 {
812 name: '',
813 plate: '',
814 departure: '',
815 arrival: '',
816 departureDate: '08:00',
817 customerData: [
818 {
819 rowNo: '1',
820 batch: '1',
821 hospital: '德州办事处',
822 address: '德州市德城区世纪嘉园小区',
823 dateTime: '08:40',
824 stopTime: 20,
825 pkgs: 0,
826 coordinate: '116.33733900,37.42873700',
827 isOrigin: 'Y',
828 vehicleType: '2',
829 timeInterval: '',
830 name: '路飞',
831 plate: '德州1333887'
832 },
833 {
834 rowNo: '1',
835 batch: '1',
836 hospital: '夏津联络处',
837 address: '山东省德州市夏津县',
838 dateTime: '09:00',
839 stopTime: 10,
840 pkgs: 0,
841 coordinate: '116.00172600,36.94837100',
842 isOrigin: 'Y',
843 vehicleType: '1',
844 timeInterval: '',
845 name: '宗珂',
846 plate: '鲁A75A1N'
847 }
848 ]
849 },
850 {
851 name: '',
852 plate: '',
853 departure: '',
854 arrival: '',
855 departureDate: '08:00',
856 customerData: [
857 {
858 rowNo: '1',
859 batch: '1',
860 hospital: '聊城联络处',
861 address: '山东省聊城市东昌府区',
862 dateTime: '08:00',
863 stopTime: 10,
864 pkgs: 0,
865 coordinate: '115.98849100,36.43464500',
866 isOrigin: 'Y',
867 vehicleType: '1',
868 timeInterval: '',
869 name: '田耀中',
870 plate: '鲁A790Z9'
871 }
872 ]
873 }
874 ]
875 }
876 },
877 methods: {
878 getDate() {
879 this.date = new Date()
880 },
881 cityChage(e) {
882 console.log(e.target.value)
883 },
884 // 即时规划
885 instantPlanning() {
886 console.log(this.cloneData)
887 this.cloneData.batch = this.currentData.batch
888 this.cloneData.departureDate = this.currentData.departureDate
889 let obj = _.cloneDeep(this.orginData[this.index])
890 if (this.index == 4) {
891 if (this.currentData.batch == '第一批') {
892 obj.customerData = this.cloneData.customerData.filter(item => item.batch == 1)
893 obj.arrival = this.cloneData.customerData.findLast(element => element.batch == '1').hospital
894 obj.batch = '第一批'
895 this.$store.dispatch('setOrder', JSON.stringify(obj))
896 } else {
897 obj.customerData = this.cloneData.customerData.filter(item => item.batch == 2)
898 obj.customerData.unshift(this.cloneData.customerData.findLast(element => element.batch == '1'))
899 obj.departure = this.cloneData.customerData[this.cloneData.customerData.length - 1].hospital
900 obj.batch = '第二批'
901 this.$store.dispatch('setOrder', JSON.stringify(obj))
902 }
903 } else {
904 this.$store.dispatch('setOrder', JSON.stringify(this.cloneData))
905 }
906 this.$router.push({ path: '/about1' })
907 },
908 nextStep() {
909 console.log(this.checkeData)
910 if (!this.checkeData.length) {
911 Toast('请至少选择一条数据')
912 return
913 }
914 this.$store.dispatch('setDepart', JSON.stringify(this.checkeData))
915 this.$router.push({ path: '/target' })
916 },
917 // 下一个
918 nextOrder() {
919 console.log(this.orginData)
920 if (this.index == this.orginData.length - 1) {
921 Toast.fail('已经是最后一条')
922 return
923 }
924 this.index++
925 this.cloneData = _.cloneDeep(this.orginData[this.index])
926 this.currentData = _.cloneDeep(this.orginData[this.index])
927 if (this.index == 4) {
928 this.currentData.customerData = this.currentData.customerData.filter(item => item.batch == 1)
929 }
930 this.currentData.customerData.shift()
931 this.currentData.batch = '第一批'
932 this.currentData.arrival = this.cloneData.customerData.findLast(element => element.batch == '1').hospital
933 // this.currentData.departureDate = this.cloneData.customerData.findLast(element => element.batch == '1').dateTime
934 this.currentData.customerData.forEach((item, index) => (item.rowNo = index + 1))
935 this.$forceUpdate()
936 },
937 // 上一个
938 lastOrder() {
939 console.log(this.orginData)
940 if (this.index == 0) {
941 Toast.fail('已经是第一条')
942 return
943 }
944 this.index--
945 this.cloneData = _.cloneDeep(this.orginData[this.index])
946 this.currentData = _.cloneDeep(this.orginData[this.index])
947 if (this.index == 4) {
948 this.currentData.customerData = this.currentData.customerData.filter(item => item.batch == 1)
949 }
950 this.currentData.customerData.shift()
951 this.currentData.batch = '第一批'
952 this.currentData.arrival = this.cloneData.customerData.findLast(element => element.batch == '1').hospital
953 // this.currentData.departureDate = this.cloneData.customerData.findLast(element => element.batch == '1').dateTime
954 this.currentData.customerData.forEach((item, index) => (item.rowNo = index + 1))
955 this.$forceUpdate()
956 },
957 // 下一批
958 nextCargo() {
959 console.log(this.orginData[this.index].customerData)
960 if (this.index == 4) {
961 this.currentData.customerData = this.cloneData.customerData.filter(item => item.batch == 2)
962 this.currentData.departure = this.cloneData.customerData.findLast(element => element.batch == '1').hospital
963 this.currentData.departureDate = this.cloneData.customerData.findLast(element => element.batch == '1').dateTime
964 this.currentData.customerData.forEach((item, index) => (item.rowNo = index + 1))
965 this.currentData.batch = '第二批'
966 }
967 console.log(this.currentData.customerData)
968 },
969 // 上一批
970 lastCargo() {
971 if (this.index == 4) {
972 this.currentData.customerData = this.cloneData.customerData.filter(item => item.batch == 1)
973 this.currentData.arrival = this.cloneData.customerData.findLast(element => element.batch == '1').hospital
974 this.currentData.departureDate = this.cloneData.customerData[0].dateTime
975 this.currentData.customerData.forEach((item, index) => (item.rowNo = index + 1))
976 this.currentData.batch = '第一批'
977 }
978 }
979 },
980 created() {
981 this.city = this.$store.state.app.city || '济南'
982 this.$bus.$on('selecte', e => (this.checkeData = e))
983 },
984 mounted() {},
985 destroyed() {
986 // this.$bus.$off('selecte')
987 },
988 watch: {
989 city: {
990 handler: function (val) {
991 switch (val) {
992 case '济南':
993 this.$store.dispatch('setCity', val)
994 this.currentData = this.DepartureList[0]?.customerData
995 this.currentData.forEach((item, index) => (item.rowNo = index + 1))
996
997 break
998 case '德州':
999 this.$store.dispatch('setCity', val)
1000 this.currentData = this.DepartureList[1]?.customerData
1001 this.currentData.forEach((item, index) => (item.rowNo = index + 1))
1002
1003 break
1004 case '聊城':
1005 this.$store.dispatch('setCity', val)
1006 this.currentData = this.DepartureList[2]?.customerData
1007 this.currentData.forEach((item, index) => (item.rowNo = index + 1))
1008 break
1009 }
1010 },
1011 deep: true,
1012 immediate: true
1013 }
1014 }
1015 }
1016 </script>
1017
1018 <style lang="scss" scoped>
1019 .title {
1020 padding: 10px;
1021 }
1022
1023 .header-text {
1024 font-size: 36px;
1025 font-weight: 800;
1026 }
1027
1028 .fixed-bottom-right {
1029 // position: absolute;
1030 margin-top: 80px;
1031 bottom: 20px;
1032 right: 0px;
1033 width: 100%;
1034 }
1035 </style>
1 <template> 1 <template>
2 <div class="index-container"> 2 <div>
3 <div class="warpper"> 3 <div class="title">
4 <h1 class="demo-home__title"> 4 <van-row type="flex" justify="space-around">
5 <img src="https://cdn.jsdelivr.net/gh/fonghehe/picture/vue-h5-template/logo.png" /><span> VUE H5开发模板</span> 5 <van-col span="8" class="header-text">业务员:{{ currentData.name }}</van-col>
6 </h1> 6 <van-col span="8" class="header-text">车牌号:{{ currentData.plate }}</van-col>
7 <h2 class="demo-home__desc">A vue h5 template with Vant UI</h2> 7 <van-col span="8" class="header-text">批次:{{ currentData.batch }}</van-col>
8 </van-row>
9 <van-row type="flex" style="margin-top: 15px" justify="space-around">
10 <van-col span="8" class="header-text">
11 出发地: <span>{{ currentData.departure }}</span>
12 </van-col>
13 <van-col span="8" class="header-text"> 目的地:{{ currentData.arrival }} </van-col>
14 <van-col span="8" class="header-text" style="display: flex">
15 出发时间:<van-field v-model="currentData.departureDate" size="small" placeholder="请输入时间"
16 /></van-col>
17 </van-row>
18 </div>
19 <Table-vant :option="option" :tableData="currentData.customerData"></Table-vant>
20 <div class="fixed-bottom-right">
21 <div style="display: flex; justify-content: space-between; margin-top: 10px">
22 <van-button round plain type="info" @click="nextOrder()">下一个</van-button>
23 <van-button round plain type="primary" @click="instantPlanning">即时规划</van-button>
24 <van-button round plain type="warning" @click="nextCargo()">下一批</van-button>
25 </div>
26 <div style="display: flex; justify-content: space-between; margin-top: 10px">
27 <van-button round plain type="info" @click="lastOrder()">上一个</van-button>
28 <van-button round plain type="warning" @click="lastCargo()">上一批</van-button>
29 </div>
8 </div> 30 </div>
9 <van-cell icon="success" v-for="item in list" :key="item" :title="item" />
10 </div> 31 </div>
11 </template> 32 </template>
12 33
13 <script setup> 34 <script>
14 import { ref } from 'vue' 35 import TableVant from '@/components/Table.vue'
36 import { Toast } from 'vant'
37 import _ from 'lodash'
38 export default {
39 components: { TableVant },
40 data() {
41 return {
42 index: 0,
43 date: '',
44 cloneData: {},
45 currentData: {
46 name: '',
47 plate: '',
48 batch: '第一批',
49 departure: '',
50 arrival: '',
51 departureDate: '',
52 customerData: []
53 },
54 option: {
55 column: [
56 {
57 label: '序号',
58 tableDataprop: 'rowNo',
59 width: '50px'
60 },
61 {
62 label: '途经',
63 tableDataprop: 'hospital',
64 width: '230px'
65 },
66 {
67 label: '取样数',
68 tableDataprop: 'pkgs',
69 width: '50px',
70 align: 'right'
71 },
72 {
73 label: '状态',
74 tableDataprop: 'status',
75 width: '50px'
76 }
77 ]
78 },
79 orginData: [
80 {
81 name: '王东',
82 plate: '鲁A73HU8',
83 departure: '济南迪安中心办事处',
84 arrival: '济南样本室对接点',
85 departureDate: '07:30',
86 customerData: [
87 {
88 rowNo: '1',
89 batch: '1',
90 hospital: '济南迪安中心办事处',
91 address: '济南市高新区颖秀路2755号',
92 dateTime: '6:30',
93 stopTime: 15,
94 pkgs: '-',
95 coordinate: '117.13394400,36.67904500'
96 },
97 // {
98 // rowNo: '2',
99 // batch: '1',
100 // hospital: '济南样本室对接点',
101 // address: '济南市高新区颖秀路2755号',
102 // dateTime: '6:50',
103 // stopTime: 10,
104 // pkgs: "-",
105 // coordinate: '117.13394400,36.67904500'
106 // },
107 {
108 rowNo: '3',
109 batch: '1',
110 hospital: '济南西站对接点',
111 address: '济南市槐荫区齐鲁大道6号',
112 dateTime: '7:50',
113 stopTime: 20,
114 pkgs: '-',
115 coordinate: '116.89177900,36.66887900'
116 },
117 {
118 rowNo: '4',
119 batch: '1',
120 hospital: '济南和合医学检验有限公司',
121 address: '槐荫区美里湖555号路海那城总部42号楼',
122 dateTime: '8:55',
123 stopTime: 15,
124 pkgs: 100,
125 coordinate: '116.91937000,36.72000800'
126 },
127 {
128 rowNo: '5',
129 batch: '1',
130 hospital: '山东第一医科大学附属皮肤病医院',
131 address: '济南市经十路27397号',
132 dateTime: '9:30',
133 stopTime: 10,
134 pkgs: 100,
135 coordinate: '116.92826100,36.65210900'
136 },
137 {
138 rowNo: '6',
139 batch: '1',
140 hospital: '山东禾力升医学检验实验室有限公司',
141 address: '济南市市中区南辛庄西路丰润 怡邻居西门',
142 dateTime: '10:00',
143 stopTime: 10,
144 pkgs: 100,
145 coordinate: '116.96255900,36.63623600'
146 },
147 {
148 rowNo: '7',
149 batch: '1',
150 hospital: '市中慢病第四人民医院青龙山分院',
151 address: '山东省济南市市中区南辛庄西路272号',
152 dateTime: '10:20',
153 stopTime: 40,
154 pkgs: 100,
155 coordinate: '116.95988200,36.62819100'
156 },
157 {
158 rowNo: '8',
159 batch: '1',
160 hospital: '山东省医学科学院放射医学研究所',
161 address: '济南经十路89号9956',
162 dateTime: '11:15',
163 stopTime: 15,
164 pkgs: 100,
165 coordinate: '117.01788200,36.64911300'
166 },
167 {
168 rowNo: '9',
169 batch: '1',
170 hospital: '山东省分析测试中心',
171 address: '山东省济南市历下区科院路19号详情',
172 dateTime: '11:40',
173 stopTime: 10,
174 pkgs: 100,
175 coordinate: '117.04783900,36.64556100'
176 },
177 // {
178 // rowNo: '10',
179 // batch: '1',
180 // hospital: '济南汇安健康管理有限公司历下门诊部',
181 // address: '济南市历下区文化西路15号',
182 // dateTime: '12:05',
183 // stopTime: 120,
184 // pkgs: 100,
185 // coordinate: '117.03081400,36.65417800'
186 // },
187 // {
188 // rowNo: '11',
189 // batch: '1',
190 // hospital: '武警山东总队医院',
191 // address: '山东省济南市历下区浆水泉路12--8号',
192 // dateTime: '14:45',
193 // stopTime: 15,
194 // pkgs: 100,
195 // coordinate: '117.08718600,36.65631700'
196 // },
197 {
198 rowNo: '10',
199 batch: '1',
200 hospital: '济南样本室对接点',
201 address: '济南市历下区颖秀路2755号',
202 dateTime: '15:20',
203 stopTime: 30,
204 pkgs: 100,
205 coordinate: '117.13394400,36.67904500'
206 }
207 ]
208 },
209 {
210 name: '路飞',
211 plate: '德州1333887',
212 departure: '德州办事处',
213 arrival: '德州办事处',
214 departureDate: '08:30',
215 customerData: [
216 {
217 rowNo: '1',
218 batch: '1',
219 hospital: '德州办事处',
220 address: '德州市德城区世纪嘉园小区',
221 dateTime: '8:40',
222 stopTime: 20,
223 pkgs: '-',
224 coordinate: '116.33733900,37.42873700'
225 },
226 {
227 rowNo: '2',
228 batch: '1',
229 hospital: '德州交通医院',
230 address: '德城区东风中路389号',
231 dateTime: '9:15',
232 stopTime: 20,
233 pkgs: 2,
234 coordinate: '116.31887300,37.44295900'
235 },
236 {
237 rowNo: '3',
238 batch: '1',
239 hospital: '德州市人民医院',
240 address: '德州市新湖大街1751号',
241 dateTime: '9:47',
242 stopTime: 100,
243 pkgs: 41,
244 coordinate: '116.30555600,37.45116400'
245 },
246 {
247 rowNo: '4',
248 batch: '1',
249 hospital: '德州市人民医院(特检)',
250 address: '德州市新湖大街1751号',
251 dateTime: '11:32',
252 stopTime: 15,
253 pkgs: 1,
254 coordinate: '116.30555600,37.45116400'
255 },
256 {
257 rowNo: '5',
258 batch: '1',
259 hospital: '德州市立医院对接点',
260 address: '德州市德城区三八中路1766号',
261 dateTime: '11:55',
262 stopTime: 20,
263 pkgs: '-',
264 coordinate: '116.29370300,37.45320200'
265 },
266 // {
267 // rowNo: '6',
268 // batch: '1',
269 // hospital: '德州市立医院',
270 // address: '山东省德州市德城区三八路1766号',
271 // dateTime: '12:55',
272 // stopTime: 90,
273 // pkgs: 2,
274 // coordinate: '116.29370300,37.45320200'
275 // },
276 // {
277 // rowNo: '7',
278 // batch: '1',
279 // hospital: '德棉医院',
280 // address: '德州市运河开发区纺织大街522号',
281 // dateTime: '14:37',
282 // stopTime: 20,
283 // pkgs: "-",
284 // coordinate: '116.27572300,37.45761700'
285 // },
286 {
287 rowNo: '8',
288 batch: '1',
289 hospital: '德州汽车站对接点',
290 address: '德州市德城区东风路1667号',
291 dateTime: '15:12',
292 stopTime: 15,
293 pkgs: '-',
294 coordinate: '116.29082500,37.44405800'
295 },
296 {
297 rowNo: '9',
298 batch: '1',
299 hospital: '德州办事处',
300 address: '德州市德城区世纪嘉园小区',
301 dateTime: '15:52',
302 stopTime: 20,
303 pkgs: '-',
304 coordinate: '116.33733900,37.42873700'
305 }
306 ]
307 },
308 {
309 name: '田耀中',
310 plate: '鲁A790Z9',
311 departure: '聊城联络处',
312 arrival: '聊城联络处对接点',
313 departureDate: '09:30',
314 customerData: [
315 {
316 rowNo: '1',
317 batch: '1',
318 hospital: '聊城联络处',
319 address: '山东省聊城市东昌府区',
320 dateTime: '8:00',
321 stopTime: 10,
322 pkgs: '-',
323 coordinate: '115.98849100,36.43464500'
324 },
325 {
326 rowNo: '2',
327 batch: '1',
328 hospital: '聊城市东昌府区侯营镇卫生院',
329 address: '山东省聊城市东昌府区侯营镇侯营村',
330 dateTime: '8:35',
331 stopTime: 10,
332 pkgs: 100,
333 coordinate: '115.88725200,36.39946400'
334 },
335 {
336 rowNo: '3',
337 batch: '1',
338 hospital: '聊城市东昌府区和光诊所',
339 address: '山东省聊城市东昌府区柳园街道陈口路金柱大学城A区30幢s30-113号商铺',
340 dateTime: '9:12',
341 stopTime: 10,
342 pkgs: 100,
343 coordinate: '116.01666300,36.44393800'
344 },
345 {
346 rowNo: '4',
347 batch: '1',
348 hospital: '聊城市东昌府区韩集镇卫生院',
349 address: '山东省聊城市东昌府区韩集镇政府',
350 dateTime: '9:55',
351 stopTime: 10,
352 pkgs: 100,
353 coordinate: '116.18228000,36.40897800'
354 },
355 {
356 rowNo: '5',
357 batch: '1',
358 hospital: '茌平万里行中医诊所',
359 address: '聊城市茌平县建设路1416号',
360 dateTime: '10:40',
361 stopTime: 10,
362 pkgs: 100,
363 coordinate: '116.21077700,36.56289800'
364 },
365 {
366 rowNo: '6',
367 batch: '1',
368 hospital: '聊城市茌平区人民医院',
369 address: '聊城市茌平县文化路99号',
370 dateTime: '11:00',
371 stopTime: 15,
372 pkgs: 100,
373 coordinate: '116.24962100,36.57960700'
374 },
375 {
376 rowNo: '7',
377 batch: '1',
378 hospital: '聊城市茌平区中医医院',
379 address: '聊城市茌平区新政西路1163号',
380 dateTime: '11:22',
381 stopTime: 30,
382 pkgs: 100,
383 coordinate: '116.24271400,36.58568300'
384 },
385 {
386 rowNo: '8',
387 batch: '1',
388 hospital: '茌平县和睦家妇科诊所',
389 address: '茌平县三产院内',
390 dateTime: '12:22',
391 stopTime: 5,
392 pkgs: 100,
393 coordinate: '116.23697900,36.58427100'
394 },
395 {
396 rowNo: '9',
397 batch: '1',
398 hospital: '聊城市茌平区温陈街道社区卫生服务中心',
399 address: '聊城市茌平区温陈街道',
400 dateTime: '12:47',
401 stopTime: 5,
402 pkgs: 100,
403 coordinate: '116.24984700,36.59027400'
404 },
405 {
406 rowNo: '10',
407 batch: '1',
408 hospital: '聊城市茌平区胡屯镇卫生院',
409 address: '聊城市茌平区新政西路1163号',
410 dateTime: '13:12',
411 stopTime: 10,
412 pkgs: 100,
413 coordinate: '116.24271400,36.58568300'
414 },
415 {
416 rowNo: '11',
417 batch: '1',
418 hospital: '高唐县中医院',
419 address: '高唐县东兴路16号',
420 dateTime: '13:52',
421 stopTime: 10,
422 pkgs: 100,
423 coordinate: '116.25357800,36.85772200'
424 },
425 {
426 rowNo: '12',
427 batch: '1',
428 hospital: '高唐县人民医院',
429 address: '山东省高唐县金城西路99号',
430 dateTime: '14:17',
431 stopTime: 15,
432 pkgs: 100,
433 coordinate: '116.22798600,36.86687600'
434 },
435 {
436 rowNo: '13',
437 batch: '1',
438 hospital: '聊城市茌平区第二人民医院',
439 address: '茌平县博平镇政府街',
440 dateTime: '15:04',
441 stopTime: 15,
442 pkgs: 100,
443 coordinate: '116.11760000,36.58789400'
444 },
445 // {
446 // rowNo: '14',
447 // batch: '1',
448 // hospital: '聊城市茌平区洪官屯镇卫生院',
449 // address: '聊城市茌平区洪官屯镇政府驻地',
450 // dateTime: '15:47',
451 // stopTime: 15,
452 // pkgs: 100,
453 // coordinate: '116.06041900,36.39670700'
454 // },
455 {
456 rowNo: '15',
457 batch: '1',
458 hospital: '聊城汽车总站对接点',
459 address: '聊城市东昌府区建设路与柳园北路交汇处西北角',
460 dateTime: '16:22',
461 stopTime: 8,
462 pkgs: '-',
463 coordinate: '115.98847500,36.47286500'
464 },
465 // {
466 // rowNo: '16',
467 // batch: '1',
468 // hospital: '聊城市东昌府区妇幼保健院(两癌)',
469 // address: '山东省聊城市东昌府区振兴西路129号',
470 // dateTime: '16:40',
471 // stopTime: 50,
472 // pkgs: 100,
473 // coordinate: '115.95710000,36.46834600'
474 // },
475 {
476 rowNo: '17',
477 batch: '1',
478 hospital: '聊城联络处',
479 address: '山东省聊城市东昌府区',
480 dateTime: '17:43',
481 stopTime: 30,
482 pkgs: '-',
483 coordinate: '115.98849100,36.43464500'
484 },
485 {
486 rowNo: '18',
487 batch: '1',
488 hospital: '聊城联络处对接点',
489 address: '山东省聊城市东昌府区',
490 dateTime: '18:18',
491 stopTime: 20,
492 pkgs: '-',
493 coordinate: '115.98849100,36.43464500'
494 }
495 ]
496 },
497 {
498 name: '尹逊武',
499 plate: '济南2595139',
500 departure: '尹逊武家',
501 arrival: '尹逊武家',
502 departureDate: '06:30',
503 customerData: [
504 {
505 rowNo: '1',
506 batch: '1',
507 hospital: '尹逊武家',
508 address: '山东省济南市历城区北园大街57号',
509 dateTime: '7:30',
510 stopTime: 30,
511 pkgs: 0,
512 coordinate: '117.05366200,36.69689900'
513 },
514 {
515 rowNo: '2',
516 batch: '1',
517 hospital: '山东大学齐鲁医院',
518 address: '济南市文化西路107号',
519 dateTime: '8:50',
520 stopTime: 190,
521 pkgs: 100,
522 coordinate: '117.01839000,36.65659000'
523 },
524 // {
525 // rowNo: '3',
526 // batch: '1',
527 // hospital: '山东省中医院(西院)',
528 // address: '山东省济南市文化西路42号',
529 // dateTime: '11:25',
530 // stopTime: 30,
531 // pkgs: 100,
532 // coordinate: '117.02325300,36.65510600'
533 // },
534 {
535 rowNo: '4',
536 batch: '1',
537 hospital: '济南市中医医院1',
538 address: '山东省济南市槐荫区美里路555号海那城总部24号楼101单元401',
539 dateTime: '12:05',
540 stopTime: 30,
541 pkgs: 100,
542 coordinate: '116.91984000,36.72078200'
543 },
544 {
545 rowNo: '5',
546 batch: '1',
547 hospital: '济南丽合医疗美容医院有限公司',
548 address: '山东省济南市历下区黑虎泉北路61号',
549 dateTime: '13:15',
550 stopTime: 10,
551 pkgs: 100,
552 coordinate: '117.03587900,36.67266400'
553 },
554 // {
555 // rowNo: '6',
556 // batch: '1',
557 // hospital: '山东省千佛山医院',
558 // address: '经十路山师东路',
559 // dateTime: '13:40',
560 // stopTime: 20,
561 // pkgs: 100,
562 // coordinate: '117.04485100,36.64754900'
563 // },
564 {
565 rowNo: '7',
566 batch: '1',
567 hospital: '山东第一医科大学第一附属医院',
568 address: '山东省济南市历下区经十路16766号',
569 dateTime: '14:05',
570 stopTime: 20,
571 pkgs: 100,
572 coordinate: '117.04244800,36.64765800'
573 },
574 {
575 rowNo: '8',
576 batch: '1',
577 hospital: '山东大学齐鲁医院',
578 address: '济南市文化西路107号',
579 dateTime: '14:40',
580 stopTime: 140,
581 pkgs: 100,
582 coordinate: '117.01839000,36.65659000'
583 },
584 {
585 rowNo: '9',
586 batch: '1',
587 hospital: '济南长途汽车总站对接点',
588 address: '济南市天桥区济洛路131号',
589 dateTime: '17:25',
590 stopTime: 15,
591 pkgs: 0,
592 coordinate: '116.99360600,36.68543900'
593 },
594 {
595 rowNo: '10',
596 batch: '1',
597 hospital: '尹逊武家',
598 address: '山东省济南市历城区北园大街57号',
599 dateTime: '18:10',
600 stopTime: 5,
601 pkgs: 0,
602 coordinate: '117.05366200,36.69689900'
603 }
604 ]
605 },
606 {
607 name: '孙天麟',
608 plate: '鲁A2Q3C2',
609 departure: '济南迪安中心办事处',
610 arrival: '济南样本室对接点',
611 departureDate: '09:30',
612 customerData: [
613 {
614 rowNo: '1',
615 batch: '1',
616 hospital: '济南迪安中心办事处',
617 address: '济南市高新区颖秀路2755号',
618 dateTime: '14:00',
619 stopTime: 30,
620 pkgs: '-',
621 coordinate: '117.13394400,36.67904500'
622 },
623 {
624 rowNo: '2',
625 batch: '1',
626 hospital: '济南佰年颐堂中医医院有限公司',
627 address: '山东省济南市历城区工业北路180号院内办公楼2号楼1层',
628 dateTime: '14:55',
629 stopTime: 10,
630 pkgs: 100,
631 coordinate: '117.26118400,36.63685400'
632 },
633 // {
634 // rowNo: '3',
635 // batch: '1',
636 // hospital: '山东元辰生物医药科技集团有限公司',
637 // address: '华山街道丑父路135号华山片区安置区二区S3号楼商业区四层',
638 // dateTime: '15:20',
639 // stopTime: 10,
640 // pkgs: 100,
641 // coordinate: '117.06162300,36.68773700'
642 // },
643 // {
644 // rowNo: '4',
645 // batch: '1',
646 // hospital: '山东大学第二医院(检验科)',
647 // address: '山东大学第二医院(检验科)',
648 // dateTime: '15:50',
649 // stopTime: 30,
650 // pkgs: 100,
651 // coordinate: '117.04054100,36.69042100'
652 // },
653 {
654 rowNo: '5',
655 batch: '1',
656 hospital: '山东省立第三医院',
657 address: '山东省济南市无影山中路12号',
658 dateTime: '16:40',
659 stopTime: 60,
660 pkgs: 100,
661 coordinate: '116.98967800,36.68406100'
662 },
663 {
664 rowNo: '6',
665 batch: '1',
666 hospital: '济南长途汽车总站对接点',
667 address: '济南市天桥区济洛路131号',
668 dateTime: '17:45',
669 stopTime: 60,
670 pkgs: '-',
671 coordinate: '116.99360600,36.68543900'
672 },
673 // {
674 // rowNo: '7',
675 // batch: '1',
676 // hospital: '济南样本室对接点',
677 // address: '济南市历下区颖秀路2755号',
678 // dateTime: '19:45',
679 // stopTime: 10,
680 // pkgs: '-',
681 // coordinate: '117.13394400,36.67904500'
682 // },
683 {
684 rowNo: '8',
685 batch: '2',
686 hospital: '艾迪康',
687 address: '济南市天桥区田家庄东路4号',
688 dateTime: '20:45',
689 stopTime: 5,
690 pkgs: 100,
691 coordinate: '116.97534100,36.69010900'
692 },
693 {
694 rowNo: '9',
695 batch: '2',
696 hospital: '济南西站对接点',
697 address: '济南市槐荫区齐鲁大道6号',
698 dateTime: '21:10',
699 stopTime: 15,
700 pkgs: '-',
701 coordinate: '116.89177900,36.66887900'
702 },
703 // {
704 // rowNo: '10',
705 // batch: '2',
706 // hospital: '济南长途汽车总站对接点',
707 // address: '济南市天桥区济洛路131号',
708 // dateTime: '21:45',
709 // stopTime: 15,
710 // pkgs: '-',
711 // coordinate: '116.99360600,36.68543900'
712 // },
713 {
714 rowNo: '11',
715 batch: '2',
716 hospital: '济南样本室对接点',
717 address: '济南市历下区颖秀路2755号',
718 dateTime: '22:40',
719 stopTime: 10,
720 pkgs: '-',
721 coordinate: '117.13394400,36.67904500'
722 }
723 ]
724 }
725 ]
726 }
727 },
728 methods: {
729 getDate() {
730 this.date = new Date()
731 },
732 // 即时规划
733 instantPlanning() {
734 console.log(this.cloneData)
735 this.cloneData.batch = this.currentData.batch
736 this.cloneData.departureDate = this.currentData.departureDate
737 let obj = _.cloneDeep(this.orginData[this.index])
738 if (this.index == 4) {
739 if (this.currentData.batch == '第一批') {
740 obj.customerData = this.cloneData.customerData.filter(item => item.batch == 1)
741 obj.arrival = this.cloneData.customerData.findLast(element => element.batch == '1').hospital
742 obj.batch = '第一批'
743 this.$store.dispatch('setOrder', JSON.stringify(obj))
744 } else {
745 obj.customerData = this.cloneData.customerData.filter(item => item.batch == 2)
746 obj.customerData.unshift(this.cloneData.customerData.findLast(element => element.batch == '1'))
747 obj.departure = this.cloneData.customerData[this.cloneData.customerData.length - 1].hospital
748 obj.batch = '第二批'
749 this.$store.dispatch('setOrder', JSON.stringify(obj))
750 }
751 } else {
752 this.$store.dispatch('setOrder', JSON.stringify(this.cloneData))
753 }
754 this.$router.push({ path: '/about' })
755 },
756 // 下一个
757 nextOrder() {
758 console.log(this.orginData)
759 if (this.index == this.orginData.length - 1) {
760 Toast.fail('已经是最后一条')
761 return
762 }
763 this.index++
764 this.cloneData = _.cloneDeep(this.orginData[this.index])
765 this.currentData = _.cloneDeep(this.orginData[this.index])
766 if (this.index == 4) {
767 this.currentData.customerData = this.currentData.customerData.filter(item => item.batch == 1)
768 }
769 this.currentData.customerData.shift()
770 this.currentData.batch = '第一批'
771 this.currentData.arrival = this.cloneData.customerData.findLast(element => element.batch == '1').hospital
772 // this.currentData.departureDate = this.cloneData.customerData.findLast(element => element.batch == '1').dateTime
773 this.currentData.customerData.forEach((item, index) => (item.rowNo = index + 1))
774 this.$forceUpdate()
775 },
776 // 上一个
777 lastOrder() {
778 console.log(this.orginData)
779 if (this.index == 0) {
780 Toast.fail('已经是第一条')
781 return
782 }
783 this.index--
784 this.cloneData = _.cloneDeep(this.orginData[this.index])
785 this.currentData = _.cloneDeep(this.orginData[this.index])
786 if (this.index == 4) {
787 this.currentData.customerData = this.currentData.customerData.filter(item => item.batch == 1)
788 }
789 this.currentData.customerData.shift()
790 this.currentData.batch = '第一批'
791 this.currentData.arrival = this.cloneData.customerData.findLast(element => element.batch == '1').hospital
792 // this.currentData.departureDate = this.cloneData.customerData.findLast(element => element.batch == '1').dateTime
793 this.currentData.customerData.forEach((item, index) => (item.rowNo = index + 1))
794 this.$forceUpdate()
795 },
796 // 下一批
797 nextCargo() {
798 console.log(this.orginData[this.index].customerData)
799 if (this.index == 4) {
800 this.currentData.customerData = this.cloneData.customerData.filter(item => item.batch == 2)
801 this.currentData.departure = this.cloneData.customerData.findLast(element => element.batch == '1').hospital
802 this.currentData.departureDate = this.cloneData.customerData.findLast(element => element.batch == '1').dateTime
803 this.currentData.customerData.forEach((item, index) => (item.rowNo = index + 1))
804 this.currentData.batch = '第二批'
805 }
806 console.log(this.currentData.customerData)
807 },
808 // 上一批
809 lastCargo() {
810 if (this.index == 4) {
811 this.currentData.customerData = this.cloneData.customerData.filter(item => item.batch == 1)
812 this.currentData.arrival = this.cloneData.customerData.findLast(element => element.batch == '1').hospital
813 this.currentData.departureDate = this.cloneData.customerData[0].dateTime
814 this.currentData.customerData.forEach((item, index) => (item.rowNo = index + 1))
815 this.currentData.batch = '第一批'
816 }
817 }
818 },
819 created() {
820 this.orginData.forEach(item => item.customerData.forEach(item1 => (item1.status = '未去')))
821 this.cloneData = _.cloneDeep(this.orginData[this.index])
822 this.currentData = _.cloneDeep(this.orginData[this.index])
823 this.currentData.batch = '第一批'
824 this.currentData.customerData.shift()
825 console.log('cloneData', this.cloneData)
15 826
16 let list = ref([ 827 this.currentData.customerData.forEach((item, index) => (item.rowNo = index + 1))
17 'Vue-cli4', 828 console.log(this.currentData.customerData)
18 '配置多环境变量', 829 this.getDate()
19 'VantUI 组件按需加载', 830 }
20 'Sass 全局样式', 831 }
21 'Webpack 4',
22 'Vuex 状态管理',
23 'Axios 封装及接口管理',
24 'Vue-router',
25 'Webpack 4 vue.config.js 基础配置',
26 '配置 proxy 跨域',
27 '配置 alias 别名',
28 '配置 打包分析',
29 '配置 externals 引入 cdn 资源',
30 '去掉 console.log',
31 'splitChunks 单独打包第三方模块',
32 '添加 IE 兼容',
33 'Eslint+Pettier 统一开发规范'
34 ])
35 </script> 832 </script>
36 833
37 <style lang="scss" scoped> 834 <style lang="scss" scoped>
38 .index-container { 835 .title {
39 .warpper { 836 padding: 10px;
40 padding: 24px; 837 }
41 background: #fff; 838
42 .demo-home__title { 839 .header-text {
43 display: flex; 840 font-size: 24px;
44 align-items: center; 841 font-weight: 800;
45 justify-content: center; 842 }
46 margin: 0 0 6px; 843
47 font-size: 56px; 844 .table-box {
48 .demo-home__title img, 845 margin: 12px 0px;
49 .demo-home__title span { 846
50 display: inline-block; 847 .th-row {
51 vertical-align: middle; 848 height: 56px;
52 } 849 line-height: 56px;
53 img { 850 background: #ebf1f7;
54 width: 64px; 851 padding: 0px 12px;
55 } 852 font-size: 36px;
56 span {
57 margin-left: 16px;
58 font-weight: 500;
59 }
60 }
61 .demo-home__desc {
62 text-align: center;
63 margin: 0 0 20px;
64 color: rgba(69, 90, 100, 0.6);
65 font-size: 28px;
66 } 853 }
854
855 .tb-row {
856 font-size: 48px;
857 height: 56px;
858 line-height: 56px;
859 padding: 0px 12px;
67 } 860 }
68 } 861 }
862
863 .fixed-bottom-right {
864 // position: absolute;
865 margin-top: 80px;
866 bottom: 20px;
867 right: 0px;
868 width: 100%;
869 }
69 </style> 870 </style>
......
1 <template>
2 <div>
3 <div class="title">
4 <van-row type="flex" style="margin-top: 15px" justify="space-around">
5 <van-col span="24" class="header-text" style="display: flex">
6 <van-cell-group>
7 城市:
8 <select name="pets" id="pet-select" v-model="city" class="city" @change="cityChage($event)">
9 <option v-for="item in cityOptions" :key="item.value" :value="item.value">{{ item.label }}</option>
10 </select>
11 </van-cell-group>
12 </van-col>
13 </van-row>
14 </div>
15 <div style="width: 100%; overflow-x: auto">
16 <Table-vant :option="option" :tableData="resultData" width="790px">
17 <template v-slot:startTime="{ item }">
18 <div>{{ item.startTime | formatDate('hh:mm:ss') }}</div>
19 </template>
20 <template v-slot:lastArrivalTime="{ item }">
21 <div>{{ item.lastArrivalTime | formatDate('hh:mm:ss') }}</div>
22 </template>
23 <template v-slot:opreate="{ item }">
24 <button class="text-button" @click="geDetail(item)">详情</button>
25 </template>
26 </Table-vant>
27 </div>
28 </div>
29 </template>
30 <script>
31 import TableVant from '@/components/Table.vue'
32 import { getPlan, getSession } from '@/api/user.js'
33 import { Toast } from 'vant'
34 import _ from 'lodash'
35 export default {
36 name: '',
37 props: {},
38 components: { TableVant },
39 data() {
40 return {
41 city: '',
42 targetData: [],
43 departureData: [],
44 cityOptions: [
45 { label: '济南', value: '济南' },
46 { label: '德州', value: '德州' },
47 { label: '聊城', value: '聊城' }
48 ],
49 resultData: [
50 {
51 address: '',
52 batch: '',
53 coordinate: '',
54 dateTime: '',
55 hospital: '',
56 pkgs: '',
57 rowNo: '1',
58 status: '',
59 stopTime: ''
60 }
61 ],
62 option: {
63 column: [
64 {
65 label: '序号',
66 tableDataprop: 'rowNo',
67 width: '50px',
68 align: 'center'
69 },
70 {
71 label: '取件人',
72 tableDataprop: 'name',
73 width: '50px'
74 },
75 {
76 label: '规划路线',
77 tableDataprop: 'path',
78 width: '300px'
79 },
80 {
81 label: '总里程',
82 tableDataprop: 'totalDistance',
83 width: '80px'
84 },
85 {
86 label: '总耗时',
87 tableDataprop: 'totalTimes',
88 width: '80px'
89 },
90 {
91 label: '出发时间',
92 tableDataprop: 'startTime',
93 width: '80px'
94 },
95 {
96 label: '回程时间',
97 tableDataprop: 'lastArrivalTime',
98 width: '80px'
99 },
100 {
101 label: '操作',
102 tableDataprop: 'opreate',
103 width: '80px',
104 align: 'center'
105 }
106 ]
107 }
108 }
109 },
110 computed: {},
111 watch: {},
112 methods: {
113 geDetail(e) {
114 this.$store.dispatch('setCurentData', JSON.stringify(e))
115 this.$router.push({ path: '/about1', query: { data: JSON.stringify(e) } })
116 console.log(e)
117 },
118 getSessionId() {
119 let params = {
120 client_id: 'dd48c515fcde43bea0b5bd0b8f77e119',
121 grant_type: 'client_credentials',
122 client_secret: 'c6602114c9ba488b877d0d84b0e5e700',
123 scope: 'read'
124 }
125 getSession(params, {}).then(res => {
126 this.accessToken = res.access_token
127 this.initData([...this.departureData, ...this.targetData])
128 })
129 },
130 // 请求数据案例
131 initData(list) {
132 Toast.loading({
133 duration: 0
134 })
135 console.log('123', list)
136 let arr = _.cloneDeep(list)
137 const data = {
138 region: this.city,
139 plate: '',
140 departure: '',
141 arrival: '',
142 departureDate: '06:30',
143 customerData: arr
144 }
145 const params = {
146 method: 'GetRouteMatrix_test',
147 format: 'json',
148 sessionId: this.accessToken,
149 sign: '203EF639BA15A6E001B59DB78AB81470B7893CAF',
150 appKey: 'dd48c515fcde43bea0b5bd0b8f77e119',
151 v: '1.0'
152 }
153 getPlan(data, params)
154 .then(res => {
155 Toast.clear()
156 let newArr = JSON.parse(res).returnModel
157 console.log('返回的数据', newArr)
158 newArr.forEach(item => {
159 item.data.forEach((e, index) => {
160 e.distance = e.distance.toFixed(2)
161 e.hospital = e.returnName
162 e.status = '未去'
163 e.coordinate = e.destination
164 e.isOrigin = 'N'
165 if (index == item.data.length - 1) {
166 e.pkgs = 0
167 } else {
168 e.pkgs = 100
169 }
170 // e.distance.toFixed(2)
171 })
172 item.data.pop()
173 })
174 this.resultData = newArr
175 console.log('aaaaa', this.resultData)
176
177 let arrs = this.resultData
178 arrs.forEach((item, index) => {
179 item.rowNo = index + 1
180 })
181 })
182 .catch(() => {})
183 }
184 },
185 created() {
186 this.city = this.$store.state.app.city
187 this.targetData = this.$store.getters.getTarget
188 this.departureData = JSON.parse(this.$store.state.app.depart)
189 this.resultData = JSON.parse(this.$store.state.app.order)
190 },
191 mounted() {}
192 }
193 </script>
194 <style lang="scss" scoped>
195 .header-text {
196 font-size: 36px;
197 font-weight: 800;
198 }
199 </style>
1 <template>
2 <div>
3 <div class="title">
4 <div>目标列表</div>
5 <van-row type="flex" style="margin-top: 15px" justify="space-around">
6 <van-col span="24" class="header-text" style="display: flex">
7 <!-- <van-datetime-picker v-model="currentData.departureDate" type="time" title="选择时间" /> -->
8 <van-cell-group>
9 <!-- <van-field v-model="currentData.departureDate" label="出发时间" placeholder="请输入出发时间" /> -->
10 城市:
11 <select name="pets" id="pet-select" class="city" v-model="city">
12 <option v-for="item in cityOptions" :key="item.value" :value="item.value">{{ item.label }}</option>
13 </select>
14 </van-cell-group>
15 <!-- 出发时间:<van-field v-model="currentData.departureDate" size="small" placeholder="请输入时间" /> -->
16 </van-col>
17 </van-row>
18 </div>
19 <div style="width: 100%; overflow-x: auto; margin-bottom: 50px">
20 <Table-vant :option="option" :tableData="currentData" :showCheck="true" width="480px">
21 <template v-slot:dateTime="{ item }">
22 <input type="text" v-model="item.dateTime" style="width: 80%; height: 25px" />
23 </template>
24 <template v-slot:vehicleType="{ item }">
25 <div>{{ item.vehicleType == 1 ? '电动汽车' : '电动车' }}</div>
26 </template>
27 </Table-vant>
28 </div>
29 <div class="fixed-bottom-right">
30 <div style="display: flex; flex-direction: row-reverse; margin-top: 10px">
31 <!-- <van-button round plain type="primary" @click="instantPlanning">即时规划</van-button> -->
32 <van-button round plain type="primary" @click="nextStep">下一步</van-button>
33 </div>
34 </div>
35 </div>
36 </template>
37
38 <script>
39 import TableVant from '@/components/Table.vue'
40 import { getPlan, getSession } from '@/api/user.js'
41 import { Toast } from 'vant'
42 import _ from 'lodash'
43 export default {
44 components: { TableVant },
45 data() {
46 return {
47 index: 0,
48 date: '',
49 cloneData: {},
50 checkeData: [],
51 city: '',
52 currentData: [],
53 departureData: [],
54 cityOptions: [
55 { label: '济南', value: '济南' },
56 { label: '德州', value: '德州' },
57 { label: '聊城', value: '聊城' }
58 ],
59 option: {
60 column: [
61 {
62 label: '序号',
63 tableDataprop: 'rowNo',
64 align: 'center',
65 width: '50px'
66 },
67 {
68 label: '目标点',
69 tableDataprop: 'hospital',
70 width: '210px'
71 },
72 {
73 label: '取样数',
74 tableDataprop: 'pkgs',
75 width: '50px',
76 align: 'right'
77 },
78 {
79 label: '取样时间',
80 tableDataprop: 'dateTime',
81 width: '80px'
82 },
83 {
84 label: '使用工具',
85 tableDataprop: 'vehicleType',
86 width: '80px'
87 }
88 ]
89 },
90 TargetList: [
91 {
92 name: '',
93 plate: '',
94 departure: '',
95 arrival: '',
96 departureDate: '06:30',
97 customerData: [
98 {
99 rowNo: '2',
100 batch: '1',
101 hospital: '济南西站对接点',
102 address: '济南市槐荫区齐鲁大道6号',
103 dateTime: '07:50',
104 stopTime: 20,
105 pkgs: 0,
106 coordinate: '116.89177900,36.66887900',
107 isOrigin: 'N',
108 vehicleType: '1',
109 timeInterval: ''
110 },
111 {
112 rowNo: '3',
113 batch: '1',
114 hospital: '济南和合医学检验有限公司',
115 address: '槐荫区美里湖555号路海那城总部42号楼',
116 dateTime: '08:55',
117 stopTime: 15,
118 pkgs: 0,
119 coordinate: '116.91937000,36.72000800',
120 isOrigin: 'N',
121 vehicleType: '1',
122 timeInterval: '09:00,10:00'
123 },
124 {
125 rowNo: '4',
126 batch: '1',
127 hospital: '山东第一医科大学附属皮肤病医院',
128 address: '济南市经十路27397号',
129 dateTime: '09:30',
130 stopTime: 10,
131 pkgs: 100,
132 coordinate: '116.92826100,36.65210900',
133 isOrigin: 'N',
134 vehicleType: '1',
135 timeInterval: '09:00,11:30'
136 },
137 {
138 rowNo: '5',
139 batch: '1',
140 hospital: '山东禾力升医学检验实验室有限公司',
141 address: '济南市市中区南辛庄西路丰润 怡邻居西门',
142 dateTime: '10:00',
143 stopTime: 10,
144 pkgs: 100,
145 coordinate: '116.96255900,36.63623600',
146 isOrigin: 'N',
147 vehicleType: '1',
148 timeInterval: ''
149 },
150 {
151 rowNo: '6',
152 batch: '1',
153 hospital: '市中慢病第四人民医院青龙山分院',
154 address: '山东省济南市市中区南辛庄西路272号',
155 dateTime: '10:20',
156 stopTime: 40,
157 pkgs: 100,
158 coordinate: '116.95988200,36.62819100',
159 isOrigin: 'N',
160 vehicleType: '1',
161 timeInterval: ''
162 },
163 {
164 rowNo: '7',
165 batch: '1',
166 hospital: '山东省医学科学院放射医学研究所',
167 address: '济南经十路89号9956',
168 dateTime: '11:15',
169 stopTime: 15,
170 pkgs: 100,
171 coordinate: '117.01788200,36.64911300',
172 isOrigin: 'N',
173 vehicleType: '1',
174 timeInterval: ''
175 },
176 {
177 rowNo: '8',
178 batch: '1',
179 hospital: '山东省分析测试中心',
180 address: '山东省济南市历下区科院路19号详情',
181 dateTime: '11:40',
182 stopTime: 10,
183 pkgs: 100,
184 coordinate: '117.04783900,36.64556100',
185 isOrigin: 'N',
186 vehicleType: '1',
187 timeInterval: ''
188 },
189 {
190 rowNo: '9',
191 batch: '1',
192 hospital: '济南汇安健康管理有限公司历下门诊部',
193 address: '济南市历下区文化西路15号',
194 dateTime: '12:05',
195 stopTime: 120,
196 pkgs: 100,
197 coordinate: '117.03081400,36.65417800',
198 isOrigin: 'N',
199 vehicleType: '1',
200 timeInterval: ''
201 },
202 {
203 rowNo: '10',
204 batch: '1',
205 hospital: '武警山东总队医院',
206 address: '山东省济南市历下区浆水泉路12--8号',
207 dateTime: '14:45',
208 stopTime: 15,
209 pkgs: 100,
210 coordinate: '117.08718600,36.65631700',
211 isOrigin: 'N',
212 vehicleType: '1',
213 timeInterval: ''
214 },
215 {
216 rowNo: '11',
217 batch: '1',
218 hospital: '济南样本室对接点',
219 address: '济南市历下区颖秀路2755号',
220 dateTime: '15:20',
221 stopTime: 30,
222 pkgs: 100,
223 coordinate: '117.13394400,36.67904500',
224 isOrigin: 'N',
225 vehicleType: '1',
226 timeInterval: ''
227 },
228 {
229 rowNo: '2',
230 batch: '1',
231 hospital: '山东大学齐鲁医院',
232 address: '济南市文化西路107号',
233 dateTime: '08:50',
234 stopTime: 190,
235 pkgs: 100,
236 coordinate: '117.01839000,36.65659000',
237 isOrigin: 'N',
238 vehicleType: '2',
239 timeInterval: ''
240 },
241 {
242 rowNo: '3',
243 batch: '1',
244 hospital: '山东省中医院(西院)',
245 address: '山东省济南市文化西路42号',
246 dateTime: '11:25',
247 stopTime: 30,
248 pkgs: 100,
249 coordinate: '117.02325300,36.65510600',
250 isOrigin: 'N',
251 vehicleType: '2',
252 timeInterval: '09:00,12:00'
253 },
254 {
255 rowNo: '4',
256 batch: '1',
257 hospital: '济南市中医医院1',
258 address: '山东省济南市槐荫区美里路555号海那城总部24号楼101单元401',
259 dateTime: '12:05',
260 stopTime: 30,
261 pkgs: 100,
262 coordinate: '116.91984000,36.72078200',
263 isOrigin: 'N',
264 vehicleType: '2',
265 timeInterval: ''
266 },
267 {
268 rowNo: '5',
269 batch: '1',
270 hospital: '济南丽合医疗美容医院有限公司',
271 address: '山东省济南市历下区黑虎泉北路61号',
272 dateTime: '13:15',
273 stopTime: 10,
274 pkgs: 100,
275 coordinate: '117.03587900,36.67266400',
276 isOrigin: 'N',
277 vehicleType: '2',
278 timeInterval: ''
279 },
280 {
281 rowNo: '6',
282 batch: '1',
283 hospital: '山东省千佛山医院',
284 address: '经十路山师东路',
285 dateTime: '13:40',
286 stopTime: 20,
287 pkgs: 100,
288 coordinate: '117.04485100,36.64754900',
289 isOrigin: 'N',
290 vehicleType: '2',
291 timeInterval: ''
292 },
293 {
294 rowNo: '7',
295 batch: '1',
296 hospital: '山东第一医科大学第一附属医院',
297 address: '山东省济南市历下区经十路16766号',
298 dateTime: '14:05',
299 stopTime: 20,
300 pkgs: 100,
301 coordinate: '117.04244800,36.64765800',
302 isOrigin: 'N',
303 vehicleType: '2',
304 timeInterval: ''
305 },
306 {
307 rowNo: '8',
308 batch: '1',
309 hospital: '济南长途汽车总站对接点',
310 address: '济南市天桥区济洛路131号',
311 dateTime: '17:25',
312 stopTime: 15,
313 pkgs: 0,
314 coordinate: '116.99360600,36.68543900',
315 isOrigin: 'N',
316 vehicleType: '2',
317 timeInterval: ''
318 },
319 {
320 rowNo: '2',
321 batch: '1',
322 hospital: '山东省省立医院东院',
323 address: '山东省济南市历下区经十路9677号',
324 dateTime: '09:05',
325 stopTime: 90,
326 pkgs: 100,
327 coordinate: '117.12129000,36.66338600',
328 isOrigin: 'N',
329 vehicleType: '2',
330 timeInterval: ''
331 },
332 {
333 rowNo: '3',
334 batch: '1',
335 hospital: '山东省省立医院东院(特检)',
336 address: '山东省济南市历下区经十路9667号',
337 dateTime: '10:40',
338 stopTime: 30,
339 pkgs: 100,
340 coordinate: '117.03401900,36.64879400',
341 isOrigin: 'N',
342 vehicleType: '2',
343 timeInterval: ''
344 },
345 {
346 rowNo: '4',
347 batch: '1',
348 hospital: '新华卓越门诊部(济南)有限公司',
349 address: '济南市历下区龙奥北路8-4号玉兰广场2号楼3层',
350 dateTime: '11:20',
351 stopTime: 10,
352 pkgs: 100,
353 coordinate: '117.12426800,36.65054700',
354 isOrigin: 'N',
355 vehicleType: '2',
356 timeInterval: ''
357 },
358 {
359 rowNo: '4',
360 batch: '1',
361 hospital: '济南市历下区姚家办事处仁合社区卫生服务站',
362 address: '济南市历下区荆山路438-62号',
363 dateTime: '11:55',
364 stopTime: 15,
365 pkgs: 100,
366 coordinate: '117.07670700,36.64310600',
367 isOrigin: 'N',
368 vehicleType: '2',
369 timeInterval: ''
370 },
371 {
372 rowNo: '4',
373 batch: '1',
374 hospital: '济南迪安中心办事处',
375 address: '济南市高新区颖秀路2755号',
376 dateTime: '12:40',
377 stopTime: 30,
378 pkgs: 100,
379 coordinate: '117.13394400,36.67904500',
380 isOrigin: 'N',
381 vehicleType: '2',
382 timeInterval: ''
383 },
384 {
385 rowNo: '4',
386 batch: '1',
387 hospital: '济南云康达安医学检验实验室有限公司',
388 address: '济南市高新区颖秀路2766号迪亚产业园东楼二楼',
389 dateTime: '13:40',
390 stopTime: 10,
391 pkgs: 100,
392 coordinate: '117.13506400,36.67946300',
393 isOrigin: 'N',
394 vehicleType: '2',
395 timeInterval: ''
396 },
397 {
398 rowNo: '4',
399 batch: '1',
400 hospital: '济南爱新卓尔医学检验有限公司',
401 address: '济南市历下区天辰路1318',
402 dateTime: '13:55',
403 stopTime: 10,
404 pkgs: 100,
405 coordinate: '117.13495300,36.68222100',
406 isOrigin: 'N',
407 vehicleType: '2',
408 timeInterval: ''
409 },
410 {
411 rowNo: '4',
412 batch: '1',
413 hospital: '济南高新区雅居园社区卫生服务站',
414 address: '济南高新区雅居园小区北门商 用房1期2区1号楼1单元 2201.202.203室',
415 dateTime: '14:15',
416 stopTime: 10,
417 pkgs: 100,
418 coordinate: '117.12526800,36.67245200',
419 isOrigin: 'N',
420 vehicleType: '2',
421 timeInterval: ''
422 },
423 {
424 rowNo: '4',
425 batch: '1',
426 hospital: '山东省立医院',
427 address: '济南市经五纬七路324号',
428 dateTime: '08:25',
429 stopTime: 210,
430 pkgs: 100,
431 coordinate: '116.98415700,36.65685700',
432 isOrigin: 'N',
433 vehicleType: '2',
434 timeInterval: ''
435 },
436 {
437 rowNo: '4',
438 batch: '1',
439 hospital: '济南市槐荫区西市场办事处纬十路社区卫生服务站',
440 address: '济南市槐荫区经三纬十一路330号',
441 dateTime: '12:05',
442 stopTime: 10,
443 pkgs: 100,
444 coordinate: '116.97392000,36.65924000',
445 isOrigin: 'N',
446 vehicleType: '2',
447 timeInterval: ''
448 },
449 {
450 rowNo: '4',
451 batch: '1',
452 hospital: '济南市天桥区纬北经纬嘉园社区卫生服务站',
453 address: '经一路经纬嘉园住宅小区141-31号',
454 dateTime: '16:30',
455 stopTime: 20,
456 pkgs: 100,
457 coordinate: '120.08842500,30.87737500',
458 isOrigin: 'N',
459 vehicleType: '2',
460 timeInterval: ''
461 },
462 {
463 rowNo: '4',
464 batch: '1',
465 hospital: '济南市槐荫区五里沟公祥街社区卫生服务站',
466 address: '槐荫区纬五路39-7',
467 dateTime: '16:55',
468 stopTime: 15,
469 pkgs: 100,
470 coordinate: '116.98715800,36.66398400',
471 isOrigin: 'N',
472 vehicleType: '2',
473 timeInterval: ''
474 },
475 {
476 rowNo: '4',
477 batch: '1',
478 hospital: '山东光正眼科医院有限公司',
479 address: '济南市市中区经二路223号',
480 dateTime: '17:15',
481 stopTime: 50,
482 pkgs: 100,
483 coordinate: '116.99099400,36.66410100',
484 isOrigin: 'N',
485 vehicleType: '2',
486 timeInterval: ''
487 },
488 {
489 rowNo: '4',
490 batch: '1',
491 hospital: '山东光正眼科医院有限公司',
492 address: '济南市市中区经二路223号',
493 dateTime: '17:15',
494 stopTime: 50,
495 pkgs: 100,
496 coordinate: '116.99099400,36.66410100',
497 isOrigin: 'N',
498 vehicleType: '2',
499 timeInterval: ''
500 },
501 {
502 rowNo: '4',
503 batch: '1',
504 hospital: '山东省康复医院',
505 address: '历城区唐冶新区围子山路3126号',
506 dateTime: '10:40',
507 stopTime: 50,
508 pkgs: 100,
509 coordinate: '117.24190100,36.68823600',
510 isOrigin: 'N',
511 vehicleType: '2',
512 timeInterval: ''
513 },
514 {
515 rowNo: '4',
516 batch: '1',
517 hospital: '山东水发生命科学研究有限公司',
518 address: '山东省济南市高新区大正路1777号生命科学城13号楼一层',
519 dateTime: '11:50',
520 stopTime: 15,
521 pkgs: 100,
522 coordinate: '117.32744800,36.70332300',
523 isOrigin: 'N',
524 vehicleType: '2',
525 timeInterval: ''
526 },
527 {
528 rowNo: '4',
529 batch: '1',
530 hospital: '章丘慢性病防治所对接点',
531 address: '济南市章丘区唐王山路1099号',
532 dateTime: '12:40',
533 stopTime: 15,
534 pkgs: 0,
535 coordinate: '117.53489000,36.69297100',
536 isOrigin: 'N',
537 vehicleType: '2',
538 timeInterval: ''
539 },
540 {
541 rowNo: '4',
542 batch: '1',
543 hospital: '济南万泉生物技术有限公司',
544 address: '济南市高新区港兴三路北段一号济南药谷研发平台区1号楼A座1305',
545 dateTime: '14:05',
546 stopTime: 15,
547 pkgs: 100,
548 coordinate: '117.22268400,36.66921200',
549 isOrigin: 'N',
550 vehicleType: '2',
551 timeInterval: ''
552 },
553 {
554 rowNo: '4',
555 batch: '1',
556 hospital: '健颐生物(药谷)',
557 address: '济南市历城区港兴三路济南药谷1号楼A座25楼',
558 dateTime: '14:25',
559 stopTime: 15,
560 pkgs: 100,
561 coordinate: '117.22278300,36.66978200',
562 isOrigin: 'N',
563 vehicleType: '2',
564 timeInterval: ''
565 },
566 {
567 rowNo: '4',
568 batch: '1',
569 hospital: '山东惠然生物科技有限公司',
570 address: '高新区港兴三路北段1号济南市药谷研发平台区2号楼1801房间',
571 dateTime: '14:45',
572 stopTime: 15,
573 pkgs: 100,
574 coordinate: '117.22239900,36.66859400',
575 isOrigin: 'N',
576 vehicleType: '2',
577 timeInterval: ''
578 },
579 {
580 rowNo: '4',
581 batch: '1',
582 hospital: '山东富优生命科学有限公司',
583 address: '山东富优生命科学有限公司',
584 dateTime: '15:05',
585 stopTime: 15,
586 pkgs: 100,
587 coordinate: '117.22283000,36.67004000',
588 isOrigin: 'N',
589 vehicleType: '2',
590 timeInterval: ''
591 },
592 {
593 rowNo: '4',
594 batch: '1',
595 hospital: '山东省齐鲁细胞治疗工程技术有限公司',
596 address: '山东省济南市高新区港兴三路1109号',
597 dateTime: '16:05',
598 stopTime: 10,
599 pkgs: 100,
600 coordinate: '117.22257900,36.65528700',
601 isOrigin: 'N',
602 vehicleType: '2',
603 timeInterval: ''
604 },
605 {
606 rowNo: '4',
607 batch: '1',
608 hospital: '济南高新开发区景琪综合门诊有限公司',
609 address: '高新区舜华路街道街道华奥路77号东鲁凤凰上都6-104',
610 dateTime: '16:35',
611 stopTime: 15,
612 pkgs: 100,
613 coordinate: '117.15647200,36.65323700',
614 isOrigin: 'N',
615 vehicleType: '2',
616 timeInterval: ''
617 },
618 {
619 rowNo: '4',
620 batch: '1',
621 hospital: '济南市历下区龙洞办事处社区卫生服务中心',
622 address: '历下区龙洞办事处锦屏家园龙锦生活广场10号楼02号铺',
623 dateTime: '17:05',
624 stopTime: 10,
625 pkgs: 100,
626 coordinate: '117.12264500,36.62768600',
627 isOrigin: 'N',
628 vehicleType: '2',
629 timeInterval: ''
630 },
631 {
632 rowNo: '4',
633 batch: '1',
634 hospital: '济南佰年颐堂中医医院有限公司',
635 address: '山东省济南市历城区工业北路180号院内办公楼2号楼1层',
636 dateTime: '14:55',
637 stopTime: 10,
638 pkgs: 100,
639 coordinate: '117.26118400,36.63685400',
640 isOrigin: 'N',
641 vehicleType: '2',
642 timeInterval: ''
643 },
644 {
645 rowNo: '4',
646 batch: '1',
647 hospital: '山东元辰生物医药科技集团有限公司',
648 address: '华山街道丑父路135号华山片区安置区二区S3号楼商业区四层',
649 dateTime: '15:20',
650 stopTime: 10,
651 pkgs: 100,
652 coordinate: '117.06162300,36.68773700',
653 isOrigin: 'N',
654 vehicleType: '2',
655 timeInterval: ''
656 },
657 {
658 rowNo: '4',
659 batch: '1',
660 hospital: '山东大学第二医院(检验科)',
661 address: '山东大学第二医院(检验科)',
662 dateTime: '15:50',
663 stopTime: 30,
664 pkgs: 100,
665 coordinate: '117.04054100,36.69042100',
666 isOrigin: 'N',
667 vehicleType: '2',
668 timeInterval: ''
669 },
670 {
671 rowNo: '4',
672 batch: '1',
673 hospital: '山东省立第三医院',
674 address: '山东省济南市无影山中路12号',
675 dateTime: '16:40',
676 stopTime: 60,
677 pkgs: 100,
678 coordinate: '116.98967800,36.68406100',
679 isOrigin: 'N',
680 vehicleType: '2',
681 timeInterval: ''
682 },
683 {
684 rowNo: '4',
685 batch: '1',
686 hospital: '艾迪康',
687 address: '济南市天桥区田家庄东路4号',
688 dateTime: '20:45',
689 stopTime: 5,
690 pkgs: 100,
691 coordinate: '116.97534100,36.69010900',
692 isOrigin: 'N',
693 vehicleType: '2',
694 timeInterval: ''
695 },
696 {
697 rowNo: '4',
698 batch: '1',
699 hospital: '历城奇鲁诊所',
700 address: '七里堡东路84号4号',
701 dateTime: '10:55',
702 stopTime: 10,
703 pkgs: 100,
704 coordinate: '117.07034900,36.69118200',
705 isOrigin: 'N',
706 vehicleType: '2',
707 timeInterval: ''
708 },
709 {
710 rowNo: '4',
711 batch: '1',
712 hospital: '山东省立第三医院(新城社区卫生服务中心)',
713 address: '济南市天桥区新黄路2567号',
714 dateTime: '11:25',
715 stopTime: 5,
716 pkgs: 100,
717 coordinate: '117.01213500,36.70852500',
718 isOrigin: 'N',
719 vehicleType: '2',
720 timeInterval: ''
721 },
722 {
723 rowNo: '4',
724 batch: '1',
725 hospital: '山东省立第三医院(药山站点)',
726 address: '山东省济南市天桥区药山西路南端',
727 dateTime: '11:50',
728 stopTime: 5,
729 pkgs: 100,
730 coordinate: '116.96048900,36.71312700',
731 isOrigin: 'N',
732 vehicleType: '2',
733 timeInterval: ''
734 },
735 {
736 rowNo: '4',
737 batch: '1',
738 hospital: '山东省立第三医院(济南市天桥人民医院)',
739 address: '济南市天桥区天桥街25号',
740 dateTime: '12:40',
741 stopTime: 15,
742 pkgs: 100,
743 coordinate: '116.96048900,36.71312700',
744 isOrigin: 'N',
745 vehicleType: '2',
746 timeInterval: ''
747 },
748 {
749 rowNo: '4',
750 batch: '1',
751 hospital: '济南市市中区七里山街道泉景天沅社区卫生服务站',
752 address: '济南市市中区郎茂山路4号101号',
753 dateTime: '13:15',
754 stopTime: 15,
755 pkgs: 100,
756 coordinate: '116.98310000,36.62614400',
757 isOrigin: 'N',
758 vehicleType: '2',
759 timeInterval: ''
760 },
761 {
762 rowNo: '4',
763 batch: '1',
764 hospital: '山东省南山医院有限责任公司',
765 address: '济南市市中区英雄山路134号',
766 dateTime: '13:40',
767 stopTime: 50,
768 pkgs: 100,
769 coordinate: '116.98310000,36.62614400',
770 isOrigin: 'N',
771 vehicleType: '2',
772 timeInterval: ''
773 },
774 {
775 rowNo: '4',
776 batch: '1',
777 hospital: '山东省南山医院有限责任公司(艾迪康站点)',
778 address: '济南市市中区英雄山路134号',
779 dateTime: '12:30',
780 stopTime: 5,
781 pkgs: 100,
782 coordinate: '117.00314900,36.62241000',
783 isOrigin: 'N',
784 vehicleType: '2',
785 timeInterval: ''
786 },
787 {
788 rowNo: '4',
789 batch: '1',
790 hospital: '济南市历下区第二人民医院',
791 address: '济南市历下区东关大街57号',
792 dateTime: '14:55',
793 stopTime: 15,
794 pkgs: 100,
795 coordinate: '117.04394500,36.67837900',
796 isOrigin: 'N',
797 vehicleType: '2',
798 timeInterval: ''
799 },
800 {
801 rowNo: '4',
802 batch: '1',
803 hospital: '济南三株酵本草医院有限公司',
804 address: '济南市历城区山大北路77-6号',
805 dateTime: '15:20',
806 stopTime: 10,
807 pkgs: 100,
808 coordinate: '117.06090000,36.67966900',
809 isOrigin: 'N',
810 vehicleType: '2',
811 timeInterval: ''
812 },
813 {
814 rowNo: '4',
815 batch: '1',
816 hospital: '济南市历城区妇幼保健计划生育服务中心(两癌)',
817 address: '济南市历城区洪楼西路45号',
818 dateTime: '15:35',
819 stopTime: 15,
820 pkgs: 100,
821 coordinate: '117.06136300,36.68004900',
822 isOrigin: 'N',
823 vehicleType: '2',
824 timeInterval: ''
825 },
826 {
827 rowNo: '4',
828 batch: '1',
829 hospital: '历城中医院',
830 address: '济南市历城区洪家楼南路26号',
831 dateTime: '15:55',
832 stopTime: 40,
833 pkgs: 100,
834 coordinate: '117.06652000,36.68147900',
835 isOrigin: 'N',
836 vehicleType: '2',
837 timeInterval: ''
838 },
839 {
840 rowNo: '4',
841 batch: '1',
842 hospital: '济南远大中医脑康医院有限公司',
843 address: '济南市历城区二环东路3889号',
844 dateTime: '16:40',
845 stopTime: 15,
846 pkgs: 100,
847 coordinate: '117.07276600,36.67283300',
848 isOrigin: 'N',
849 vehicleType: '2',
850 timeInterval: ''
851 },
852 {
853 rowNo: '4',
854 batch: '1',
855 hospital: '济南伊美尔整形美容医院有限公司',
856 address: '济南市解放路30-1号',
857 dateTime: '17:05',
858 stopTime: 10,
859 pkgs: 100,
860 coordinate: '117.06004900,36.66592800',
861 isOrigin: 'N',
862 vehicleType: '2',
863 timeInterval: ''
864 },
865 {
866 rowNo: '4',
867 batch: '1',
868 hospital: '济南市中心医院(精准中心)',
869 address: '山东省济南市历城区解放路105号',
870 dateTime: '17:25',
871 stopTime: 10,
872 pkgs: 100,
873 coordinate: '117.06652000,36.68147900',
874 isOrigin: 'N',
875 vehicleType: '2',
876 timeInterval: ''
877 },
878 {
879 rowNo: '4',
880 batch: '1',
881 hospital: '济南市中心医院(特检)',
882 address: '济南市历下区解放路105号',
883 dateTime: '17:40',
884 stopTime: 20,
885 pkgs: 100,
886 coordinate: '117.04767000,36.66776700',
887 isOrigin: 'N',
888 vehicleType: '2',
889 timeInterval: ''
890 },
891 {
892 rowNo: '4',
893 batch: '1',
894 hospital: '济南市济阳区人民医院',
895 address: '济阳县纬六路9号',
896 dateTime: '09:10',
897 stopTime: 80,
898 pkgs: 100,
899 coordinate: '116.98330600,36.66371900',
900 isOrigin: 'N',
901 vehicleType: '2',
902 timeInterval: ''
903 },
904 {
905 rowNo: '4',
906 batch: '1',
907 hospital: '济南市济阳区中医医院(病理)',
908 address: '山东省济南市济阳区纬二路112号',
909 dateTime: '10:40',
910 stopTime: 30,
911 pkgs: 100,
912 coordinate: '117.19134000,36.97515700',
913 isOrigin: 'N',
914 vehicleType: '2',
915 timeInterval: ''
916 },
917 {
918 rowNo: '4',
919 batch: '1',
920 hospital: '济南市济阳区中医医院',
921 address: '山东省济南市济阳区纬二路112号',
922 dateTime: '11:15',
923 stopTime: 120,
924 pkgs: 100,
925 coordinate: '117.19134000,36.97515700',
926 isOrigin: 'N',
927 vehicleType: '2',
928 timeInterval: ''
929 },
930 {
931 rowNo: '4',
932 batch: '1',
933 hospital: '济南市济阳区妇幼保健计划生育服务中心',
934 address: '山东省济南市济阳区老城街16号',
935 dateTime: '13:45',
936 stopTime: 30,
937 pkgs: 100,
938 coordinate: '117.21862800,36.97423500',
939 isOrigin: 'N',
940 vehicleType: '2',
941 timeInterval: ''
942 },
943 {
944 rowNo: '4',
945 batch: '1',
946 hospital: '济南市济阳区妇幼保健院计划生育服务中心(站点)',
947 address: '济阳区济北街道开元大街166号',
948 dateTime: '14:30',
949 stopTime: 10,
950 pkgs: 100,
951 coordinate: '117.17039900,36.97523800',
952 isOrigin: 'N',
953 vehicleType: '2',
954 timeInterval: ''
955 },
956 {
957 rowNo: '4',
958 batch: '1',
959 hospital: '济阳妇幼对接点',
960 address: '济阳区济北街道开元大街166号',
961 dateTime: '14:40',
962 stopTime: 5,
963 pkgs: 100,
964 coordinate: '117.17039900,36.97523800',
965 isOrigin: 'N',
966 vehicleType: '2',
967 timeInterval: ''
968 },
969 {
970 rowNo: '4',
971 batch: '1',
972 hospital: '济阳妇儿医院',
973 address: '济南市济 阳区德阳路与兴河街交叉口',
974 dateTime: '15:20',
975 stopTime: 10,
976 pkgs: 100,
977 coordinate: '117.12511900,36.93419300',
978 isOrigin: 'N',
979 vehicleType: '2',
980 timeInterval: ''
981 }
982 ]
983 },
984 {
985 name: '',
986 plate: '',
987 departure: '',
988 arrival: '',
989 departureDate: '08:00',
990 customerData: [
991 {
992 rowNo: '1',
993 batch: '1',
994 hospital: '德州交通医院',
995 address: '德城区东风中路389号',
996 dateTime: '09:15',
997 stopTime: 20,
998 pkgs: 2,
999 coordinate: '116.31887300,37.44295900',
1000 isOrigin: 'N',
1001 vehicleType: '2',
1002 timeInterval: ''
1003 },
1004 {
1005 rowNo: '2',
1006 batch: '1',
1007 hospital: '德州市人民医院',
1008 address: '德州市新湖大街1751号',
1009 dateTime: '09:47',
1010 stopTime: 100,
1011 pkgs: 41,
1012 coordinate: '116.30555600,37.45116400',
1013 isOrigin: 'N',
1014 vehicleType: '2',
1015 timeInterval: ''
1016 },
1017 {
1018 rowNo: '3',
1019 batch: '1',
1020 hospital: '德州市人民医院(特检)',
1021 address: '德州市新湖大街1751号',
1022 dateTime: '11:32',
1023 stopTime: 15,
1024 pkgs: 1,
1025 coordinate: '116.30555600,37.45116400',
1026 isOrigin: 'N',
1027 vehicleType: '2',
1028 timeInterval: ''
1029 },
1030 {
1031 rowNo: '4',
1032 batch: '1',
1033 hospital: '德州市立医院对接点',
1034 address: '德州市德城区三八中路1766号',
1035 dateTime: '11:55',
1036 stopTime: 20,
1037 pkgs: 100,
1038 coordinate: '116.29370300,37.45320200',
1039 isOrigin: 'N',
1040 vehicleType: '2',
1041 timeInterval: ''
1042 },
1043 {
1044 rowNo: '5',
1045 batch: '1',
1046 hospital: '德州市立医院',
1047 address: '山东省德州市德城区三八路1766号',
1048 dateTime: '12:55',
1049 stopTime: 90,
1050 pkgs: 2,
1051 coordinate: '116.29370300,37.45320200',
1052 isOrigin: 'N',
1053 vehicleType: '2',
1054 timeInterval: ''
1055 },
1056 {
1057 rowNo: '6',
1058 batch: '1',
1059 hospital: '德棉医院',
1060 address: '德州市运河开发区纺织大街522号',
1061 dateTime: '14:37',
1062 stopTime: 20,
1063 pkgs: 100,
1064 coordinate: '116.27572300,37.45761700',
1065 isOrigin: 'N',
1066 vehicleType: '2',
1067 timeInterval: ''
1068 },
1069 {
1070 rowNo: '7',
1071 batch: '1',
1072 hospital: '德州汽车站对接点',
1073 address: '德州市德城区东风路1667号',
1074 dateTime: '15:12',
1075 stopTime: 15,
1076 pkgs: 100,
1077 coordinate: '116.29082500,37.44405800',
1078 isOrigin: 'N',
1079 vehicleType: '2',
1080 timeInterval: ''
1081 },
1082 {
1083 rowNo: '8',
1084 batch: '1',
1085 hospital: '武城县妇幼保健计划生育服务中心(两癌)',
1086 address: '山东省德州市武城县振华西街1536号',
1087 dateTime: '09:50',
1088 stopTime: 10,
1089 pkgs: 100,
1090 coordinate: '116.06056800,37.21353300',
1091 isOrigin: 'N',
1092 vehicleType: '1',
1093 timeInterval: ''
1094 },
1095 {
1096 rowNo: '9',
1097 batch: '1',
1098 hospital: '武城县老城镇仓上村卫生室',
1099 address: '武城县老城镇仓上村',
1100 dateTime: '10:30',
1101 stopTime: 10,
1102 pkgs: 100,
1103 coordinate: '115.94163900,37.11129600',
1104 isOrigin: 'N',
1105 vehicleType: '1',
1106 timeInterval: ''
1107 },
1108 {
1109 rowNo: '10',
1110 batch: '1',
1111 hospital: '武城县老城镇新运社区卫生室',
1112 address: '武城县老城镇',
1113 dateTime: '10:45',
1114 stopTime: 10,
1115 pkgs: 100,
1116 coordinate: '115.89356900,37.14593200',
1117 isOrigin: 'N',
1118 vehicleType: '1',
1119 timeInterval: ''
1120 },
1121 {
1122 rowNo: '11',
1123 batch: '1',
1124 hospital: '夏津县中医院',
1125 address: '夏津县经开区北外环路',
1126 dateTime: '11:30',
1127 stopTime: 15,
1128 pkgs: 100,
1129 coordinate: '116.39217300,37.49376100',
1130 isOrigin: 'N',
1131 vehicleType: '1',
1132 timeInterval: ''
1133 },
1134 {
1135 rowNo: '12',
1136 batch: '1',
1137 hospital: '夏津三鹤血液透析有限公司',
1138 address: '山东省德州市夏津县银城街道西关街142号',
1139 dateTime: '12:25',
1140 stopTime: 15,
1141 pkgs: 100,
1142 coordinate: '116.01219400,36.95977800',
1143 isOrigin: 'N',
1144 vehicleType: '1',
1145 timeInterval: ''
1146 },
1147 {
1148 rowNo: '13',
1149 batch: '1',
1150 hospital: '夏津慎安血液透析中心有限公司',
1151 address: '山东省德州市夏津县银城街道西关南街132号',
1152 dateTime: '12:45',
1153 stopTime: 10,
1154 pkgs: 100,
1155 coordinate: '115.99462000,36.95193800',
1156 isOrigin: 'N',
1157 vehicleType: '1',
1158 timeInterval: ''
1159 },
1160 {
1161 rowNo: '14',
1162 batch: '1',
1163 hospital: '临清市老赵庄镇卫生院',
1164 address: '老赵庄镇老赵庄村199号',
1165 dateTime: '13:25',
1166 stopTime: 10,
1167 pkgs: 100,
1168 coordinate: '115.86014600,36.83849000',
1169 isOrigin: 'N',
1170 vehicleType: '1',
1171 timeInterval: ''
1172 },
1173 {
1174 rowNo: '15',
1175 batch: '1',
1176 hospital: '李娅诊所',
1177 address: '临清市黑庄民族小区',
1178 dateTime: '13:55',
1179 stopTime: 15,
1180 pkgs: 100,
1181 coordinate: '115.73074700,36.84652300',
1182 isOrigin: 'N',
1183 vehicleType: '1',
1184 timeInterval: ''
1185 },
1186 {
1187 rowNo: '16',
1188 batch: '1',
1189 hospital: '临西县第二人民医院',
1190 address: '河北省邢台市临西县河西镇顺河街7号',
1191 dateTime: '14:25',
1192 stopTime: 10,
1193 pkgs: 100,
1194 coordinate: '115.68843100,36.85466500',
1195 isOrigin: 'N',
1196 vehicleType: '1',
1197 timeInterval: ''
1198 },
1199 {
1200 rowNo: '17',
1201 batch: '1',
1202 hospital: '聊城市第二人民医院(特检)',
1203 address: '聊城市临清市先锋街道办事处健康街306号',
1204 dateTime: '14:45',
1205 stopTime: 10,
1206 pkgs: 100,
1207 coordinate: '115.70215500,36.85302700',
1208 isOrigin: 'N',
1209 vehicleType: '1',
1210 timeInterval: ''
1211 },
1212 {
1213 rowNo: '18',
1214 batch: '1',
1215 hospital: '百康诊所',
1216 address: '临清市观澜国际B3西4户',
1217 dateTime: '15:09',
1218 stopTime: 10,
1219 pkgs: 100,
1220 coordinate: '115.71547000,36.81913800',
1221 isOrigin: 'N',
1222 vehicleType: '1',
1223 timeInterval: ''
1224 },
1225 {
1226 rowNo: '19',
1227 batch: '1',
1228 hospital: '聊城市第二人民医院(新院)',
1229 address: '临清市315省道和新华路交汇处',
1230 dateTime: '15:32',
1231 stopTime: 10,
1232 pkgs: 100,
1233 coordinate: '115.59475300,36.75968600',
1234 isOrigin: 'N',
1235 vehicleType: '1',
1236 timeInterval: ''
1237 },
1238 {
1239 rowNo: '20',
1240 batch: '1',
1241 hospital: '夏津联络处对接点',
1242 address: '德州市夏津县泉林小区',
1243 dateTime: '15:52',
1244 stopTime: 15,
1245 pkgs: 100,
1246 coordinate: '115.99405300,36.97021100',
1247 isOrigin: 'N',
1248 vehicleType: '1',
1249 timeInterval: ''
1250 }
1251 ]
1252 },
1253 {
1254 name: '',
1255 plate: '',
1256 departure: '',
1257 arrival: '',
1258 departureDate: '08:00',
1259 customerData: [
1260 {
1261 rowNo: '1',
1262 batch: '1',
1263 hospital: '聊城市东昌府区侯营镇卫生院',
1264 address: '山东省聊城市东昌府区侯营镇侯营村',
1265 dateTime: '08:35',
1266 stopTime: 10,
1267 pkgs: 100,
1268 coordinate: '115.88725200,36.39946400',
1269 isOrigin: 'N',
1270 vehicleType: '1',
1271 timeInterval: ''
1272 },
1273 {
1274 rowNo: '2',
1275 batch: '1',
1276 hospital: '聊城市东昌府区和光诊所',
1277 address: '山东省聊城市东昌府区柳园街道陈口路金柱大学城A区30幢s30-113号商铺',
1278 dateTime: '09:12',
1279 stopTime: 10,
1280 pkgs: 100,
1281 coordinate: '116.01666300,36.44393800',
1282 isOrigin: 'N',
1283 vehicleType: '1',
1284 timeInterval: ''
1285 },
1286 {
1287 rowNo: '3',
1288 batch: '1',
1289 hospital: '聊城市东昌府区韩集镇卫生院',
1290 address: '山东省聊城市东昌府区韩集镇政府',
1291 dateTime: '09:55',
1292 stopTime: 10,
1293 pkgs: 100,
1294 coordinate: '116.18228000,36.40897800',
1295 isOrigin: 'N',
1296 vehicleType: '1',
1297 timeInterval: ''
1298 },
1299 {
1300 rowNo: '4',
1301 batch: '1',
1302 hospital: '茌平万里行中医诊所',
1303 address: '聊城市茌平县建设路1416号',
1304 dateTime: '10:40',
1305 stopTime: 10,
1306 pkgs: 100,
1307 coordinate: '116.21077700,36.56289800',
1308 isOrigin: 'N',
1309 vehicleType: '1',
1310 timeInterval: ''
1311 },
1312 {
1313 rowNo: '5',
1314 batch: '1',
1315 hospital: '聊城市茌平区人民医院',
1316 address: '聊城市茌平县文化路99号',
1317 dateTime: '11:00',
1318 stopTime: 15,
1319 pkgs: 100,
1320 coordinate: '116.24962100,36.57960700',
1321 isOrigin: 'N',
1322 vehicleType: '1',
1323 timeInterval: ''
1324 },
1325 {
1326 rowNo: '6',
1327 batch: '1',
1328 hospital: '聊城市茌平区中医医院',
1329 address: '聊城市茌平区新政西路1163号',
1330 dateTime: '11:22',
1331 stopTime: 30,
1332 pkgs: 100,
1333 coordinate: '116.24271400,36.58568300',
1334 isOrigin: 'N',
1335 vehicleType: '1',
1336 timeInterval: ''
1337 },
1338 {
1339 rowNo: '7',
1340 batch: '1',
1341 hospital: '茌平县和睦家妇科诊所',
1342 address: '茌平县三产院内',
1343 dateTime: '12:22',
1344 stopTime: 5,
1345 pkgs: 100,
1346 coordinate: '116.23697900,36.58427100',
1347 isOrigin: 'N',
1348 vehicleType: '1',
1349 timeInterval: ''
1350 },
1351 {
1352 rowNo: '8',
1353 batch: '1',
1354 hospital: '聊城市茌平区温陈街道社区卫生服务中心',
1355 address: '聊城市茌平区温陈街道',
1356 dateTime: '12:47',
1357 stopTime: 5,
1358 pkgs: 100,
1359 coordinate: '116.24984700,36.59027400',
1360 isOrigin: 'N',
1361 vehicleType: '1',
1362 timeInterval: ''
1363 },
1364 {
1365 rowNo: '9',
1366 batch: '1',
1367 hospital: '聊城市茌平区胡屯镇卫生院',
1368 address: '聊城市茌平区新政西路1163号',
1369 dateTime: '13:12',
1370 stopTime: 10,
1371 pkgs: 100,
1372 coordinate: '116.24271400,36.58568300',
1373 isOrigin: 'N',
1374 vehicleType: '1',
1375 timeInterval: ''
1376 },
1377 {
1378 rowNo: '10',
1379 batch: '1',
1380 hospital: '高唐县中医院',
1381 address: '高唐县东兴路16号',
1382 dateTime: '13:52',
1383 stopTime: 10,
1384 pkgs: 100,
1385 coordinate: '116.25357800,36.85772200',
1386 isOrigin: 'N',
1387 vehicleType: '1',
1388 timeInterval: ''
1389 },
1390 {
1391 rowNo: '11',
1392 batch: '1',
1393 hospital: '高唐县人民医院',
1394 address: '山东省高唐县金城西路99号',
1395 dateTime: '14:17',
1396 stopTime: 15,
1397 pkgs: 100,
1398 coordinate: '116.22798600,36.86687600',
1399 isOrigin: 'N',
1400 vehicleType: '1',
1401 timeInterval: ''
1402 },
1403 {
1404 rowNo: '12',
1405 batch: '1',
1406 hospital: '聊城市茌平区第二人民医院',
1407 address: '茌平县博平镇政府街',
1408 dateTime: '15:04',
1409 stopTime: 15,
1410 pkgs: 100,
1411 coordinate: '116.11760000,36.58789400',
1412 isOrigin: 'N',
1413 vehicleType: '1',
1414 timeInterval: ''
1415 },
1416 {
1417 rowNo: '13',
1418 batch: '1',
1419 hospital: '聊城市茌平区洪官屯镇卫生院',
1420 address: '聊城市茌平区洪官屯镇政府驻地',
1421 dateTime: '15:47',
1422 stopTime: 15,
1423 pkgs: 100,
1424 coordinate: '116.06041900,36.39670700',
1425 isOrigin: 'N',
1426 vehicleType: '1',
1427 timeInterval: ''
1428 },
1429 {
1430 rowNo: '14',
1431 batch: '1',
1432 hospital: '聊城汽车总站对接点',
1433 address: '聊城市东昌府区建设路与柳园北路交汇处西北角',
1434 dateTime: '16:22',
1435 stopTime: 8,
1436 pkgs: 100,
1437 coordinate: '115.98847500,36.47286500',
1438 isOrigin: 'N',
1439 vehicleType: '1',
1440 timeInterval: ''
1441 },
1442 {
1443 rowNo: '15',
1444 batch: '1',
1445 hospital: '聊城市东昌府区妇幼保健院(两癌)',
1446 address: '山东省聊城市东昌府区振兴西路129号',
1447 dateTime: '16:40',
1448 stopTime: 50,
1449 pkgs: 100,
1450 coordinate: '115.95710000,36.46834600',
1451 isOrigin: 'N',
1452 vehicleType: '1',
1453 timeInterval: ''
1454 },
1455 {
1456 rowNo: '16',
1457 batch: '1',
1458 hospital: '聊城联络处(回)',
1459 address: '山东省聊城市东昌府区',
1460 dateTime: '17:43',
1461 stopTime: 30,
1462 pkgs: 100,
1463 coordinate: '115.98849100,36.43464500',
1464 isOrigin: 'N',
1465 vehicleType: '1',
1466 timeInterval: ''
1467 },
1468 {
1469 rowNo: '17',
1470 batch: '1',
1471 hospital: '聊城联络处对接点',
1472 address: '山东省聊城市东昌府区',
1473 dateTime: '18:18',
1474 stopTime: 20,
1475 pkgs: 100,
1476 coordinate: '115.98849100,36.43464500',
1477 isOrigin: 'N',
1478 vehicleType: '1',
1479 timeInterval: ''
1480 }
1481 ]
1482 }
1483 ]
1484 }
1485 },
1486 methods: {
1487 getSessionId() {
1488 this.$store.dispatch('setTarget', JSON.stringify(this.checkeData))
1489 let params = {
1490 client_id: 'dd48c515fcde43bea0b5bd0b8f77e119',
1491 grant_type: 'client_credentials',
1492 client_secret: 'c6602114c9ba488b877d0d84b0e5e700',
1493 scope: 'read'
1494 }
1495 getSession(params, {}).then(res => {
1496 this.accessToken = res.access_token
1497 // if (Array.isArray(this.targetData)) {
1498 // this.initData([...this.departureData, ...this.targetData])
1499 // } else {
1500 // location.reload()
1501 // this.initData([...this.departureData, ...this.targetData])
1502 // }
1503 this.initData([...JSON.parse(this.$store.state.app.depart), ...this.checkeData])
1504 })
1505 },
1506 // 请求数据案例
1507 initData(list) {
1508 Toast.loading({
1509 duration: 0
1510 })
1511 console.log('123', list)
1512 let arr = _.cloneDeep(list)
1513 const data = {
1514 region: this.city,
1515 plate: '',
1516 departure: '',
1517 arrival: '',
1518 departureDate: '06:30',
1519 customerData: arr
1520 }
1521 const params = {
1522 method: 'GetRouteMatrix_test',
1523 format: 'json',
1524 sessionId: this.accessToken,
1525 sign: '203EF639BA15A6E001B59DB78AB81470B7893CAF',
1526 appKey: 'dd48c515fcde43bea0b5bd0b8f77e119',
1527 v: '1.0'
1528 }
1529 getPlan(data, params)
1530 .then(res => {
1531 Toast.clear()
1532 let newArr = JSON.parse(res).returnModel
1533 console.log('返回的数据', newArr)
1534 newArr.forEach(item => {
1535 item.data.forEach((e, index) => {
1536 e.distance = e.distance.toFixed(2)
1537 e.hospital = e.returnName
1538 e.status = '未去'
1539 e.coordinate = e.destination
1540 e.isOrigin = 'N'
1541 if (index == item.data.length - 1) {
1542 e.pkgs = 0
1543 } else {
1544 e.pkgs = 100
1545 }
1546 // e.distance.toFixed(2)
1547 })
1548 item.data.pop()
1549 })
1550 this.resultData = newArr
1551 console.log('aaaaa', this.resultData)
1552
1553 let arrs = this.resultData
1554 arrs.forEach((item, index) => {
1555 item.rowNo = index + 1
1556 })
1557 this.$store.dispatch('setOrder', JSON.stringify(newArr))
1558 this.$router.push({ path: '/result' })
1559 })
1560 .catch(() => {})
1561 },
1562 getDate() {
1563 this.date = new Date()
1564 },
1565 // 即时规划
1566 instantPlanning() {
1567 if (!this.checkeData.length) {
1568 Toast('请至少选择一条数据')
1569 return
1570 }
1571 this.$store.dispatch('setTarget', JSON.stringify(this.checkeData))
1572 this.$router.push({ path: '/about1' })
1573 },
1574 nextStep() {
1575 if (!this.checkeData.length) {
1576 Toast('请至少选择一条数据')
1577 return
1578 }
1579 this.getSessionId()
1580 },
1581 // 下一个
1582 nextOrder() {
1583 console.log(this.orginData)
1584 if (this.index == this.orginData.length - 1) {
1585 Toast.fail('已经是最后一条')
1586 return
1587 }
1588 this.index++
1589 this.cloneData = _.cloneDeep(this.orginData[this.index])
1590 this.currentData = _.cloneDeep(this.orginData[this.index])
1591 if (this.index == 4) {
1592 this.currentData.customerData = this.currentData.customerData.filter(item => item.batch == 1)
1593 }
1594 this.currentData.customerData.shift()
1595 this.currentData.batch = '第一批'
1596 this.currentData.arrival = this.cloneData.customerData.findLast(element => element.batch == '1').hospital
1597 // this.currentData.departureDate = this.cloneData.customerData.findLast(element => element.batch == '1').dateTime
1598 this.currentData.customerData.forEach((item, index) => (item.rowNo = index + 1))
1599 this.$forceUpdate()
1600 },
1601 // 上一个
1602 lastOrder() {
1603 console.log(this.orginData)
1604 if (this.index == 0) {
1605 Toast.fail('已经是第一条')
1606 return
1607 }
1608 this.index--
1609 this.cloneData = _.cloneDeep(this.orginData[this.index])
1610 this.currentData = _.cloneDeep(this.orginData[this.index])
1611 if (this.index == 4) {
1612 this.currentData.customerData = this.currentData.customerData.filter(item => item.batch == 1)
1613 }
1614 this.currentData.customerData.shift()
1615 this.currentData.batch = '第一批'
1616 this.currentData.arrival = this.cloneData.customerData.findLast(element => element.batch == '1').hospital
1617 // this.currentData.departureDate = this.cloneData.customerData.findLast(element => element.batch == '1').dateTime
1618 this.currentData.customerData.forEach((item, index) => (item.rowNo = index + 1))
1619 this.$forceUpdate()
1620 },
1621 // 下一批
1622 nextCargo() {
1623 console.log(this.orginData[this.index].customerData)
1624 if (this.index == 4) {
1625 this.currentData.customerData = this.cloneData.customerData.filter(item => item.batch == 2)
1626 this.currentData.departure = this.cloneData.customerData.findLast(element => element.batch == '1').hospital
1627 this.currentData.departureDate = this.cloneData.customerData.findLast(element => element.batch == '1').dateTime
1628 this.currentData.customerData.forEach((item, index) => (item.rowNo = index + 1))
1629 this.currentData.batch = '第二批'
1630 }
1631 console.log(this.currentData.customerData)
1632 },
1633 // 上一批
1634 lastCargo() {
1635 if (this.index == 4) {
1636 this.currentData.customerData = this.cloneData.customerData.filter(item => item.batch == 1)
1637 this.currentData.arrival = this.cloneData.customerData.findLast(element => element.batch == '1').hospital
1638 this.currentData.departureDate = this.cloneData.customerData[0].dateTime
1639 this.currentData.customerData.forEach((item, index) => (item.rowNo = index + 1))
1640 this.currentData.batch = '第一批'
1641 }
1642 }
1643 },
1644 watch: {
1645 city: {
1646 handler: function (val) {
1647 switch (val) {
1648 case '济南':
1649 this.$store.dispatch('setCity', val)
1650 this.currentData = this.TargetList[0]?.customerData
1651 this.currentData.forEach((item, index) => (item.rowNo = index + 1))
1652 break
1653 case '德州':
1654 this.$store.dispatch('setCity', val)
1655 this.currentData = this.TargetList[1]?.customerData
1656 this.currentData.forEach((item, index) => (item.rowNo = index + 1))
1657 break
1658 case '聊城':
1659 this.$store.dispatch('setCity', val)
1660 this.currentData = this.TargetList[2]?.customerData
1661 this.currentData.forEach((item, index) => (item.rowNo = index + 1))
1662 break
1663 }
1664 },
1665 deep: true,
1666 immediate: true
1667 }
1668 },
1669 created() {
1670 this.$bus.$on('selecte', e => (this.checkeData = e))
1671 this.city = this.$store.state.app.city
1672 this.departureData = this.$route.query.departureData
1673 // this.orginData.forEach(item => item.customerData.forEach(item1 => (item1.status = '未去')))
1674 // this.cloneData = _.cloneDeep(this.orginData[this.index])
1675 // this.currentData = _.cloneDeep(this.orginData[this.index])
1676 // this.currentData.batch = '第一批'
1677 // this.currentData.customerData.shift()
1678 // console.log('cloneData', this.cloneData)
1679 // this.currentData.customerData.forEach((item, index) => (item.rowNo = index + 1))
1680 // console.log(this.currentData.customerData)
1681 // this.getDate()
1682 },
1683 destroyed() {
1684 // 取消对bus事件的监听
1685 // this.$bus.$off('selecte')
1686 }
1687 }
1688 </script>
1689
1690 <style lang="scss" scoped>
1691 .title {
1692 padding: 10px;
1693 }
1694
1695 .header-text {
1696 font-size: 36px;
1697 font-weight: 800;
1698 }
1699
1700 .table-box {
1701 margin: 12px 0px;
1702
1703 .th-row {
1704 height: 56px;
1705 line-height: 56px;
1706 background: #ebf1f7;
1707 padding: 0px 12px;
1708 font-size: 36px;
1709 }
1710
1711 .tb-row {
1712 font-size: 48px;
1713 height: 56px;
1714 line-height: 56px;
1715 padding: 0px 12px;
1716 }
1717 }
1718
1719 .fixed-bottom-right {
1720 // position: absolute;
1721 margin-top: 80px;
1722 bottom: 20px;
1723 right: 0px;
1724 width: 100%;
1725 }
1726 </style>
1 <template> 1 <template>
2 <div class="app-container"> 2 <div class="app-container">
3 <van-nav-bar left-text="返回" left-arrow @click-left="onClickLeft" @click-right="onClickRight" />
3 <div class="layout-content"> 4 <div class="layout-content">
4 <keep-alive v-if="$route.meta.keepAlive"> 5 <keep-alive v-if="$route.meta.keepAlive">
5 <router-view></router-view> 6 <router-view></router-view>
6 </keep-alive> 7 </keep-alive>
7 <router-view v-else></router-view> 8 <router-view v-else></router-view>
8 </div> 9 </div>
9 <div class="layout-footer"> 10 <!-- <div class="layout-footer">
10 <TabBar :data="tabbars" @change="handleChange" /> 11 <TabBar :data="tabbars" @change="handleChange" />
11 </div> 12 </div> -->
12 </div> 13 </div>
13 </template> 14 </template>
14 15
...@@ -42,7 +43,13 @@ export default { ...@@ -42,7 +43,13 @@ export default {
42 methods: { 43 methods: {
43 handleChange(v) { 44 handleChange(v) {
44 console.log('tab value:', v) 45 console.log('tab value:', v)
45 } 46 },
47 onClickLeft() {
48 this.$router.go(-1)
49 },
50 onClickRight() {
51 Toast('按钮');
52 },
46 } 53 }
47 } 54 }
48 </script> 55 </script>
......
...@@ -53,18 +53,29 @@ module.exports = defineConfig({ ...@@ -53,18 +53,29 @@ module.exports = defineConfig({
53 warnings: false, 53 warnings: false,
54 errors: true 54 errors: true
55 } 55 }
56 },
57 headers: {
58 'Access-Control-Allow-Origin': '*'
59 },
60 proxy: {
61 //配置跨域
62 '/session': {
63 target: 'http://117.78.47.109:8180',
64 // ws:true,
65 changOrigin: true,
66 pathRewrite: {
67 '^/session': ''
68 }
69 },
70 '/apis': {
71 target: 'http://117.78.47.109:9081',
72 // ws:true,
73 changOrigin: true,
74 pathRewrite: {
75 '^/apis': ''
76 }
77 }
56 } 78 }
57 // proxy: {
58 // //配置跨域
59 // '/api': {
60 // target: "https://test.xxx.com",
61 // // ws:true,
62 // changOrigin:true,
63 // pathRewrite:{
64 // '^/api':'/'
65 // }
66 // }
67 // }
68 }, 79 },
69 css: { 80 css: {
70 extract: IS_PROD, // 是否将组件中的 CSS 提取至一个独立的 CSS 文件中 (而不是动态注入到 JavaScript 中的 inline 代码)。 81 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!