diff --git a/src/App.vue b/src/App.vue index d24c6a0..157c0b6 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,16 +1,8 @@ diff --git a/src/api/api.js b/src/api/api.js new file mode 100644 index 0000000..fb067b1 --- /dev/null +++ b/src/api/api.js @@ -0,0 +1,35 @@ + +import axios from "axios"; +const instacne = axios.create({ + baseURL: "http://192.168.1.15:9527/", + timeout: 30000, +}); + +instacne.interceptors.request.use( + (config) => { + + return config; + }, + (err) => { + return Promise.reject(err); + } +); + +instacne.interceptors.response.use( + (res) => { + return res.data; + }, + (err) => { + return Promise.reject(err); + } +); + + + + +export function loginAPI (parms) { + return instacne.post('/login', parms) +} + + + diff --git a/src/api/index.js b/src/api/index.js index 31cd4aa..e2eb4fa 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -1,26 +1,46 @@ import axios from "@/utils/axios.js"; +// 获取街道 export const getStreet = (data) => { return axios.get('city/get_street', { params: data }); } +// 订单列表 export const orderList = (data) => { return axios.get('dataview/curr_order_info', { params: data }); } +// 订单排行 export const orderRanking = (data) => { return axios.get('dataview/order_ranking', { params: data }); } - +// 配送商品排行 export const deliveredProductRanking = (data) => { return axios.get('dataview/delivered_product_ranking', { params: data }); } +// 三轮车列表 export const vehicleList = (data) => { return axios.get('dataview/vehicle_list', { params: data }); } +// 配送详情 export const latestLogistics = (data) => { return axios.get('dataview/latest_logistics', { params: data }); +} + +// 物流信息 +export const logisticsCount = (data) => { + return axios.get('dataview/logistics_count', { params: data }); +} + +// 条状图统计信息 +export const dateCangeCrderCount = (data) => { + return axios.get('dataview/date_range_order_count', { params: data }); +} + +// 地图配送信息 +export const logisticsMapCount = (data) => { + return axios.get('dataview/logistics_map_count', { params: data }); } \ No newline at end of file diff --git a/src/assets/login_img/BKH.png b/src/assets/login_img/BKH.png new file mode 100644 index 0000000..bde8156 Binary files /dev/null and b/src/assets/login_img/BKH.png differ diff --git a/src/assets/login_img/DL.png b/src/assets/login_img/DL.png new file mode 100644 index 0000000..6e017db Binary files /dev/null and b/src/assets/login_img/DL.png differ diff --git a/src/assets/login_img/DLBG.png b/src/assets/login_img/DLBG.png new file mode 100644 index 0000000..1a0e842 Binary files /dev/null and b/src/assets/login_img/DLBG.png differ diff --git a/src/assets/login_img/KJ.png b/src/assets/login_img/KJ.png new file mode 100644 index 0000000..863c1ff Binary files /dev/null and b/src/assets/login_img/KJ.png differ diff --git a/src/assets/login_img/MM.png b/src/assets/login_img/MM.png new file mode 100644 index 0000000..43fca71 Binary files /dev/null and b/src/assets/login_img/MM.png differ diff --git a/src/assets/login_img/ZH.png b/src/assets/login_img/ZH.png new file mode 100644 index 0000000..4053e0c Binary files /dev/null and b/src/assets/login_img/ZH.png differ diff --git a/src/assets/login_img/bg.png b/src/assets/login_img/bg.png new file mode 100644 index 0000000..10e896c Binary files /dev/null and b/src/assets/login_img/bg.png differ diff --git a/src/components/Businesses.vue b/src/components/Businesses.vue index dae74b4..7611bc3 100644 --- a/src/components/Businesses.vue +++ b/src/components/Businesses.vue @@ -5,6 +5,10 @@ import { useRouter } from 'vue-router' import paging from "./paging.vue" import mitt from "@/utils/mitt" import { orderList } from "@/api/index.js" +import { useAppStore } from "@/store/app.js" + +const appStore = useAppStore(); + const route = useRouter() const ShwostoreType = ref(false) @@ -69,8 +73,8 @@ const configs = reactive({ }) const pages = ref({ - areaCode: 510524, - streetCode: 510524100, + areaCode: appStore.address.areaCode, + streetCode: appStore.address.streetCode, page: 1, limit: 30, total: 0, diff --git a/src/components/areaList.vue b/src/components/areaList.vue index ded2601..7b0dca6 100644 --- a/src/components/areaList.vue +++ b/src/components/areaList.vue @@ -49,7 +49,6 @@ const appStore = useAppStore(); // 选镇 const choseTownFn = (item) => { - emit('offAreaList', item); if (item.code.length == 6) { appStore.setMapInfo('luxian'); appStore.setAddress({ @@ -62,6 +61,7 @@ const choseTownFn = (item) => { streetCode: item.code }) } + emit('offAreaList', item); } const open = () => { diff --git a/src/components/headView.vue b/src/components/headView.vue index 0d28040..8333d49 100644 --- a/src/components/headView.vue +++ b/src/components/headView.vue @@ -1,11 +1,13 @@ + + + + diff --git a/src/router/index.js b/src/router/index.js index cc02c18..b862fb2 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -4,12 +4,24 @@ const routes = [ { path: '/', name: 'index', - component: () => import('../view/index/index.vue') + component: () => import('../layout/index.vue'), + children: [ + { + path: '/', + name: '', + component: () => import('../view/index/index.vue') + }, + { + path: '/delivery', + name: 'delivery', + component: () => import('../view/delivery/index.vue') + }, + ] }, { - path: '/delivery', - name: 'delivery', - component: () => import('../view/delivery/index.vue') + path: '/login', + name: '/login', + component: () => import('../view/login/index.vue') } ] diff --git a/src/store/app.js b/src/store/app.js index 811e5f4..9de340f 100644 --- a/src/store/app.js +++ b/src/store/app.js @@ -4,26 +4,58 @@ import { ref } from "vue" export const useAppStore = defineStore('app', () => { const map_info = ref(localStorage.getItem('map_info') || 'luxian'); - const address = ref(JSON.parse(localStorage.getItem('address') || '{}')); - if (!address.value.areaCode) { - address.value = { areaCode: 510521, streetCode: 510521100 }; - } - const setMapInfo = (e) => { map_info.value = e; localStorage.setItem('map_info', e); } + const address = ref(JSON.parse(localStorage.getItem('address') || '{}')); + if (!address.value.areaCode) { + address.value = { areaCode: 510524, streetCode: 510524100 }; + } + + // 测试使用的初始化配置 + address.value = { areaCode: 510524, streetCode: 510524100 }; + const setAddress = (e) => { - address.value.areaCode = e.areaCode; - address.value.streetCode = e.streetCode; + e.areaCode ? address.value.areaCode = e.areaCode : null; + e.streetCode ? address.value.streetCode = e.streetCode : null; localStorage.setItem('address', JSON.stringify(e)); } + const delivery = ref({ + pending_order_count: 0, + delivering_order_count: 0, + finished_order_count: 0, + order_count: 0 + }) + + const setDelivery = (e) => { + e.pending_order_count ? delivery.value.pending_order_count = e.pending_order_count : null; + e.delivering_order_count ? delivery.value.delivering_order_count = e.delivering_order_count : null; + e.finished_order_count ? delivery.value.finished_order_count = e.finished_order_count : null; + e.order_count ? delivery.value.order_count = e.order_count : null; + } + + const delivery_address = ref(JSON.parse(localStorage.getItem('delivery_address') || '{}')); + + if (!delivery_address.value.areaCode) { + delivery_address.value = { areaCode: 510524, streetCode: 510524100 }; + } + + const setDeliveryAddress = (e) => { + delivery_address.value = e; + localStorage.setItem('delivery_address', JSON.stringify(e)); + } + return { map_info, address, + delivery, + delivery_address, setMapInfo, - setAddress + setAddress, + setDelivery, + setDeliveryAddress } }) \ No newline at end of file diff --git a/src/view/delivery/components/AMapLeft.vue b/src/view/delivery/components/AMapLeft.vue index 5f63460..166c1c4 100644 --- a/src/view/delivery/components/AMapLeft.vue +++ b/src/view/delivery/components/AMapLeft.vue @@ -6,11 +6,18 @@ let map = null; const loading = ref(true); -onMounted(() => { +const props = defineProps({ + info: { + type: Object, + default: () => { } + } +}) + +const initMap = () => { AMapLoader.load({ key: "4f8f55618010007147aab96fc72bb408", // 申请好的Web端开发者Key,首次调用 load 时必填 version: "2.0", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15 - plugins: ['AMap.ToolBar', 'AMap.Driving', 'AMap.AutoComplete'] // 需要使用的的插件列表,如比例尺'AMap.Scale'等 + plugins: ['AMap.ToolBar', 'AMap.Driving', 'AMap.AutoComplete', 'AMap.Geocoder'] // 需要使用的的插件列表,如比例尺'AMap.Scale'等 }) .then((AMap) => { map = new AMap.Map("container-left", { @@ -28,6 +35,7 @@ onMounted(() => { loading.value = false; }, 500) }); + const driving = new AMap.Driving({ map: map, // 驾车路线规划策略,AMap.DrivingPolicy.LEAST_TIME是最快捷模式 @@ -37,20 +45,59 @@ onMounted(() => { showTraffic: false, //路况 // autoFitView: false //自动调整 }) - const points = [ - { keyword: '莲花池街道里海科技', city: '泸州' }, - { keyword: '万象汇', city: '泸州' } - ] - driving.search(points, (status, result) => { - // 未出错时,result即是对应的路线规划方案 - console.log('status=', status) - console.log('result=', result) - }) + + let str = props.info.user_address; + str = str.replace(/[1-10]队/, ''); + + if (props.info.mer_lat && props.info.mer_long) { + let geocoder = new AMap.Geocoder({ + city: "泸州" + }); + geocoder.getLocation(str, function (status, result) { + if (status === 'complete' && result.info === 'OK') { + // 地理编码成功 + var geocode = result.geocodes[0]; + let start = [props.info.mer_long, props.info.mer_lat]; + let end = [geocode.location.lng, geocode.location.lat]; + driving.search(start, end, (status, result) => { + // 未出错时,result即是对应的路线规划方案 + // console.log('status=', status) + console.log('result=', result) + }) + } else { + // 地理编码失败 + const points = [ + { keyword: props.info.mer_address, city: '泸州' }, + { keyword: str, city: '泸州' } + ]; + driving.search(points, (status, result) => { + // 未出错时,result即是对应的路线规划方案 + // console.log('status=', status) + console.log('result=', result) + }) + } + }); + } else { + const points = [ + { keyword: props.info.mer_address, city: '泸州' }, + { keyword: str, city: '泸州' } + ]; + driving.search(points, (status, result) => { + // 未出错时,result即是对应的路线规划方案 + // console.log('status=', status) + console.log('result=', result) + }) + } + }) .catch((e) => { console.log(e); }); +} + +onMounted(() => { + initMap(); }); onUnmounted(() => { diff --git a/src/view/delivery/components/bottom.vue b/src/view/delivery/components/bottom.vue index 61ed804..37a5e0c 100644 --- a/src/view/delivery/components/bottom.vue +++ b/src/view/delivery/components/bottom.vue @@ -1,39 +1,38 @@ @@ -391,7 +428,11 @@ onMounted(() => {
{{ "〉" }}
- + @@ -493,6 +534,21 @@ onMounted(() => { } } + :deep(.div) { + width: 100%; + text-align: center; + height: 100%; + color: aliceblue; + background: rgba(91, 219, 246, 0.2); + white-space: nowrap; /* 防止文本换行 */ + overflow: hidden; /* 溢出部分隐藏 */ + text-overflow: ellipsis; /* 显示省略号 */ + } + + :deep(.div2) { + background: rgba(0, 168, 255, 0.16); + } + :deep(.ceil) { padding: 0 !important; margin-bottom: 5px; diff --git a/src/view/delivery/components/center.vue b/src/view/delivery/components/center.vue index 9430926..994f94a 100644 --- a/src/view/delivery/components/center.vue +++ b/src/view/delivery/components/center.vue @@ -1,11 +1,30 @@