物流页面重构
This commit is contained in:
parent
9cc9c90d95
commit
6c4a2cb0e8
BIN
sub-operation-service/src/assets/images/qiehuan.png
Normal file
BIN
sub-operation-service/src/assets/images/qiehuan.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.7 KiB |
BIN
sub-operation-service/src/assets/images/xie.png
Normal file
BIN
sub-operation-service/src/assets/images/xie.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.8 KiB |
BIN
sub-operation-service/src/assets/images/zhuan.png
Normal file
BIN
sub-operation-service/src/assets/images/zhuan.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.5 KiB |
@ -157,7 +157,7 @@
|
|||||||
<img :src="getAssetsFile('images/warehouseLogistics/优先级.png')" alt="" style="width: 20px" /> -->
|
<img :src="getAssetsFile('images/warehouseLogistics/优先级.png')" alt="" style="width: 20px" /> -->
|
||||||
</div>
|
</div>
|
||||||
<div class="storage-tags">
|
<div class="storage-tags">
|
||||||
<el-tag effect="plain" round style="background-color: rgba(37, 191, 130, 0.2); color: #25bf82">{{ item.type }}</el-tag>
|
<!-- <el-tag effect="plain" round style="background-color: rgba(37, 191, 130, 0.2); color: #25bf82">{{ item.type }}</el-tag> -->
|
||||||
<el-tag effect="plain" round style="background-color: rgba(37, 191, 130, 0.2); color: #25bf82">{{ item.monitor }}</el-tag>
|
<el-tag effect="plain" round style="background-color: rgba(37, 191, 130, 0.2); color: #25bf82">{{ item.monitor }}</el-tag>
|
||||||
<!-- <el-tag effect="plain" round style="background-color: rgba(37, 191, 130, 0.2); color: #25bf82">绿色</el-tag> -->
|
<!-- <el-tag effect="plain" round style="background-color: rgba(37, 191, 130, 0.2); color: #25bf82">绿色</el-tag> -->
|
||||||
</div>
|
</div>
|
||||||
@ -227,7 +227,7 @@ const state = reactive({
|
|||||||
data0: [],
|
data0: [],
|
||||||
data: [
|
data: [
|
||||||
{
|
{
|
||||||
title: '云南农泰数字农业科技有限公司',
|
title: '自动化分拣',
|
||||||
description: '根茎类 ',
|
description: '根茎类 ',
|
||||||
location: '临沧市·耿马县',
|
location: '临沧市·耿马县',
|
||||||
locationUrl: 'https://gov-cloud.oss-cn-chengdu.aliyuncs.com/frontend/chanye/dz.png',
|
locationUrl: 'https://gov-cloud.oss-cn-chengdu.aliyuncs.com/frontend/chanye/dz.png',
|
||||||
@ -246,7 +246,7 @@ const state = reactive({
|
|||||||
'云南绿源生态农业有限公司专注耿马高原根茎类作物,拥有5000㎡无尘车间,自动滚轴分选线可精准区分大小、糖度;全程冷链+云端监控,客户手机即可查看货位温湿度;3-5元/kg为当季地头价,量大可议价,支持京东冷链直发、边贸自提。',
|
'云南绿源生态农业有限公司专注耿马高原根茎类作物,拥有5000㎡无尘车间,自动滚轴分选线可精准区分大小、糖度;全程冷链+云端监控,客户手机即可查看货位温湿度;3-5元/kg为当季地头价,量大可议价,支持京东冷链直发、边贸自提。',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '云南农泰数字农业科技有限公司',
|
title: '人工分拣',
|
||||||
description: '豆类 ',
|
description: '豆类 ',
|
||||||
location: '临沧市·耿马县',
|
location: '临沧市·耿马县',
|
||||||
locationUrl: 'https://gov-cloud.oss-cn-chengdu.aliyuncs.com/frontend/chanye/dz.png',
|
locationUrl: 'https://gov-cloud.oss-cn-chengdu.aliyuncs.com/frontend/chanye/dz.png',
|
||||||
@ -621,7 +621,7 @@ $border-color: #dcdfe6; // 边框颜色
|
|||||||
margin: 10px 0;
|
margin: 10px 0;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
display: flex;
|
// display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
}
|
}
|
||||||
|
@ -1,398 +1,395 @@
|
|||||||
<template>
|
<template>
|
||||||
<!-- <page-layout :menus="state.menus"> </page-layout>-->
|
<div>
|
||||||
<section>
|
|
||||||
<common>
|
<common>
|
||||||
<template #main>
|
<template #main>
|
||||||
<el-card shadow="never" style="border-radius: 14px">
|
<el-card style="border-radius: 16px; margin-bottom: 20px" shadow="hover">
|
||||||
<div class="tabs tabs0">
|
<div class="choose" style="margin-bottom: 5px">
|
||||||
<div class="tab cursor">
|
<div class="searchType">车长</div>
|
||||||
<div
|
<div
|
||||||
v-for="(item, index) in tab0"
|
v-for="(item, index) in listCC"
|
||||||
:key="index"
|
:key="index"
|
||||||
class="tab_list_li"
|
:class="{ active: chooseMoney === index }"
|
||||||
style="margin-left: 20px; margin-bottom: 10px"
|
class="chooseItem"
|
||||||
:class="{ active: currentTab0 === index, tab_list_li0: currentTab0 === index }"
|
@click="changeChoose('cc', index)"
|
||||||
>
|
>
|
||||||
{{ item }}
|
{{ item.name }}
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="display: flex">
|
<div class="choose" style="margin-bottom: 10px">
|
||||||
<div style="flex: 1; text-align: left">
|
<div style="margin-left: 70px; background: #f5f5f5; color: #999; font-size: 14px; padding: 4px 15px; border-radius: 5px">
|
||||||
<el-cascader
|
<span style="margin-right: 30px">载重:{{ activeCC.weight }}</span>
|
||||||
v-model="state.query.selectedAddress"
|
<span>载方:{{ activeCC.volume }}</span>
|
||||||
:options="addressOptions"
|
|
||||||
:props="cascaderProps"
|
|
||||||
placeholder="请选择省市区"
|
|
||||||
:size="formSize"
|
|
||||||
style="width: 500px; margin-bottom: 20px"
|
|
||||||
/>
|
|
||||||
<el-input v-model="state.query.detailAddress" :size="formSize" placeholder="详细位置(如街道、门牌号等)" style="width: 500px" />
|
|
||||||
</div>
|
</div>
|
||||||
<div style="width: 150px; text-align: right">
|
</div>
|
||||||
<el-button type="primary" size="large" style="width: 100px">查询</el-button>
|
|
||||||
<el-button type="primary" size="large" style="width: 100px; margin-top: 20px" @click="shippingGoods">在线寄货</el-button>
|
<div class="choose">
|
||||||
|
<div class="searchType">车型</div>
|
||||||
|
<div
|
||||||
|
v-for="(item, index) in listCx"
|
||||||
|
:key="index"
|
||||||
|
:class="{ active: chooseDate === index }"
|
||||||
|
class="chooseItem"
|
||||||
|
@click="changeChoose('cx', index)"
|
||||||
|
>
|
||||||
|
{{ item }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
<el-card style="border-radius: 16px; margin-bottom: 20px" shadow="hover">
|
||||||
<div v-if="state.data == 0" class="warehouse-content-box no-data">暂无数据</div>
|
<div class="content-box">
|
||||||
<div v-else style="padding-bottom: 20px">
|
<div class="content-item">
|
||||||
<div v-for="(item, index) in state.data" :key="index" class="warehouse-content-box">
|
<div class="icon"><img src="@/assets/images/zhuan.png" alt="" /></div>
|
||||||
<div class="warehouse-content-box-left">
|
<div class="title">装货地址:</div>
|
||||||
<img :src="item.imageUrl" fit="cover" draggable="false" />
|
<div class="content"><el-input v-model="input" style="width: 400px" placeholder="请输入详细地址(可跨城)" clearable /></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="warehouse-content-box-center">
|
<div class="content-item">
|
||||||
<p class="center-title">
|
<div class="icon"><img src="@/assets/images/qiehuan.png" alt="" /></div>
|
||||||
{{ item.title }}
|
</div>
|
||||||
</p>
|
<div class="content-item">
|
||||||
<div class="center-text">
|
<div class="icon"><img src="@/assets/images/xie.png" alt="" /></div>
|
||||||
<div class="center-text-lable">车牌:</div>
|
<div class="title">卸货地址:</div>
|
||||||
<div class="flex-1">{{ item.licensePlate }}</div>
|
<div class="content">
|
||||||
<div class="center-text-lable">车长:</div>
|
<el-input v-model="input1" style="width: 400px" placeholder="请输入详细地址(可跨城)" clearable />
|
||||||
<div class="flex-1">{{ item.conductor }}</div>
|
|
||||||
</div>
|
|
||||||
<div class="center-text">
|
|
||||||
<div class="center-text-lable">车辆性质:</div>
|
|
||||||
<div class="flex-1">{{ item.vehicleNature }}</div>
|
|
||||||
<div class="center-text-lable">车型:</div>
|
|
||||||
<div class="flex-1">{{ item.vehicleModel }}</div>
|
|
||||||
</div>
|
|
||||||
<div class="center-text">
|
|
||||||
<div class="center-text-lable">最大载重:</div>
|
|
||||||
<div class="flex-1">{{ item.maximumPayload }}</div>
|
|
||||||
<div class="center-text-lable">空闲时间:</div>
|
|
||||||
<div class="flex-1">{{ item.freeTime }}</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="warehouse-content-box-right">
|
<div class="content-item1" @click="reservation()">
|
||||||
<p class="top-text">{{ item.price }}</p>
|
<span v-if="!isReservation" class="iconY"></span>
|
||||||
<el-button size="large" type="primary" class="right-button" @click="toLink(item)">预约</el-button>
|
<el-icon v-else style="margin-right: 5px" size="17" color="#25BF82"><SuccessFilled /></el-icon>
|
||||||
|
<span>预约用车</span>
|
||||||
|
</div>
|
||||||
|
<el-form v-if="isReservation" :model="form" label-width="auto" style="max-width: 600px">
|
||||||
|
<el-form-item label="预约时间">
|
||||||
|
<el-col :span="11">
|
||||||
|
<el-date-picker v-model="form.date" type="date" placeholder="请选择预约时间" style="width: 100%" />
|
||||||
|
</el-col>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
<el-card v-if="input != '' && input1 != ''" style="border-radius: 16px; margin-bottom: 20px" shadow="hover">
|
||||||
|
<div class="content-box1">
|
||||||
|
<div class="title">用户出价</div>
|
||||||
|
<div class="bid">
|
||||||
|
<div class="bid-left">
|
||||||
|
<p style="color: #999; font-size: 14px">灵活出价 价钱可谈</p>
|
||||||
|
</div>
|
||||||
|
<div class="bid-right" @click="openEt('bid')">
|
||||||
|
<span>预估价</span>
|
||||||
|
<span style="color: #000; font-size: 22px; font-weight: bold; margin: 0 10px">{{ form1.money }}</span>
|
||||||
|
<span style="padding-right: 10px; border-right: 1px solid #999; margin-right: 10px">元</span>
|
||||||
|
<span style="cursor: pointer">
|
||||||
|
<span style="margin-right: 4px">改价</span>
|
||||||
|
<el-icon><EditPen /></el-icon>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</el-card>
|
||||||
|
<el-card v-if="input != '' && input1 != ''" style="border-radius: 16px; margin-bottom: 20px" shadow="hover">
|
||||||
|
<div class="content-box1">
|
||||||
|
<div class="bid">
|
||||||
|
<div class="bid-left">
|
||||||
|
<p style="font-size: 16px">货物资料</p>
|
||||||
|
</div>
|
||||||
|
<div class="bid-right" @click="openEt('hwzl')">
|
||||||
|
<span style="color: #999">{{ form1.goodsInformation }}</span>
|
||||||
|
<span> ></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="bid">
|
||||||
|
<div class="bid-left">
|
||||||
|
<p style="font-size: 16px">订单备注</p>
|
||||||
|
</div>
|
||||||
|
<div class="bid-right" @click="openEt('bz')">
|
||||||
|
<span style="color: #999">{{ form1.remarks }}</span>
|
||||||
|
<span> ></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="bid" style="margin-bottom: 0">
|
||||||
|
<div class="bid-left">
|
||||||
|
<p style="font-size: 16px">联系方式</p>
|
||||||
|
</div>
|
||||||
|
<div class="bid-right" @click="openEt('lxfs')">
|
||||||
|
<span style="color: #000">{{ form1.Telephone }}</span>
|
||||||
|
<span style="color: #000"> ></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
<div>
|
||||||
|
<el-button style="padding: 10px 50px" size="large" type="primary" @click="handleApply">现在发货</el-button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- <el-pagination
|
|
||||||
:size="'large'"
|
|
||||||
:page-size="paginations.size"
|
|
||||||
:current-page="paginations.page"
|
|
||||||
:total="paginations.total"
|
|
||||||
background
|
|
||||||
layout="prev, pager, next"
|
|
||||||
@current-change="currentChange"
|
|
||||||
/> -->
|
|
||||||
</template>
|
</template>
|
||||||
</common>
|
</common>
|
||||||
</section>
|
<el-dialog v-model="dialogVisible" :title="title" width="500" align-center @close="handleClose">
|
||||||
|
<el-form v-if="isipt == 1" :model="form1" label-width="auto" style="max-width: 600px">
|
||||||
|
<el-form-item label="预估价">
|
||||||
|
<el-input v-model="form1.money" style="width: 400px" placeholder="请输入预估价" clearable />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="系统底价:">
|
||||||
|
<span style="font-size: 20px">{{ form1.money1 }}</span>
|
||||||
|
<el-icon style="margin-left: 10px; margin-right: 3px; color: chocolate"><WarningFilled /></el-icon>
|
||||||
|
<span style="color: chocolate">预估价不能低于系统底价</span></el-form-item
|
||||||
|
>
|
||||||
|
</el-form>
|
||||||
|
<el-form v-if="isipt == 2" :model="form1" label-width="auto" style="max-width: 600px">
|
||||||
|
<el-form-item label="货物信息">
|
||||||
|
<el-input v-model="form1.goodsInformation" type="textarea" style="width: 400px" placeholder="请填写货物信息" clearable />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<el-form v-if="isipt == 3" :model="form1" label-width="auto" style="max-width: 600px">
|
||||||
|
<el-form-item label="备注">
|
||||||
|
<el-input v-model="form1.remarks" type="textarea" style="width: 400px" placeholder="请填写备注" clearable />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<el-form v-if="isipt == 4" :model="form1" label-width="auto" style="max-width: 600px">
|
||||||
|
<el-form-item label="联系方式">
|
||||||
|
<el-input v-model="form1.Telephone" style="width: 400px" placeholder="请输入联系方式" clearable />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<template #footer>
|
||||||
|
<div class="dialog-footer">
|
||||||
|
<el-button @click="dialogVisible = false">取消</el-button>
|
||||||
|
<el-button type="primary" @click="sbSure()"> 确定 </el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, reactive, watch, onMounted } from 'vue';
|
import { ref, onMounted, reactive } from 'vue';
|
||||||
import { getAssetsFile } from '@/utils';
|
import common from '../components/common.vue';
|
||||||
import { useRoute, useRouter } from 'vue-router';
|
import { getAssetsFile } from '@/utils/index.js';
|
||||||
import { getWarehouseInfo, warehouseList } from '@/apis/warehouseLogistics.js';
|
import { useRouter } from 'vue-router';
|
||||||
import warehouseLogisticsRoutes from '@/router/modules/warehouseLogistics';
|
import { informationList } from '@/apis/farmingService.js';
|
||||||
import Common from '../components/common.vue';
|
|
||||||
import { useGetCommonData } from '@/store/modules/common.js';
|
|
||||||
import { storeToRefs } from 'pinia';
|
|
||||||
import { ElMessage } from 'element-plus';
|
import { ElMessage } from 'element-plus';
|
||||||
import { getRegion } from '@/apis/common';
|
import { ElMessageBox } from 'element-plus';
|
||||||
const store = useGetCommonData();
|
|
||||||
const { data } = storeToRefs(store);
|
|
||||||
const route = useRoute();
|
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
|
||||||
const tab0 = reactive(['选择位置']);
|
const dialogVisible = ref(false);
|
||||||
const currentTab0 = ref(0);
|
const title = ref('');
|
||||||
|
const isipt = ref(null);
|
||||||
|
|
||||||
const formSize = 'large';
|
const chooseMoney = ref(0);
|
||||||
|
const chooseDate = ref();
|
||||||
import img1 from './images/xiangshi.png';
|
// const listCC = ref(['5米2', '6米8', '7米6', '8米6', '9米6', '11米7', '13米', '13米7', '15米', '15米7']);
|
||||||
import img2 from './images/gaolan.png';
|
const activeCC = ref({ name: '5米2', weight: '2~5吨', volume: '15~25方' });
|
||||||
const state = reactive({
|
const listCC = ref([
|
||||||
menus: warehouseLogisticsRoutes[0].children,
|
{
|
||||||
query: {
|
name: '5米2',
|
||||||
current: {},
|
weight: '2~5吨',
|
||||||
selectedAddress: [],
|
volume: '15~25方',
|
||||||
detailAddress: '',
|
|
||||||
},
|
},
|
||||||
data: [
|
{
|
||||||
{
|
name: '6米8',
|
||||||
imageUrl: img1,
|
weight: '5~10吨',
|
||||||
title: '长途大车',
|
volume: '30~45方',
|
||||||
licensePlate: '云AL6AB7',
|
},
|
||||||
conductor: '15m',
|
{
|
||||||
vehicleNature: '物流公司',
|
name: '7米6',
|
||||||
vehicleModel: '厢式',
|
weight: '8~12吨',
|
||||||
maximumPayload: '1000吨',
|
volume: '40~55方',
|
||||||
freeTime: '2025.05.05',
|
},
|
||||||
price: '¥20元/吨/公里',
|
{
|
||||||
},
|
name: '8米6',
|
||||||
{
|
weight: '10~15吨',
|
||||||
imageUrl: img2,
|
volume: '50~65方',
|
||||||
title: '长途大车',
|
},
|
||||||
licensePlate: '云AL5B15',
|
{
|
||||||
conductor: '13m',
|
name: '9米6',
|
||||||
vehicleNature: '个人',
|
weight: '12~20吨',
|
||||||
vehicleModel: '高栏',
|
volume: '60~80方',
|
||||||
maximumPayload: '800吨',
|
},
|
||||||
freeTime: '2025.05.08',
|
{
|
||||||
price: '¥20元/吨/公里',
|
name: '11米7',
|
||||||
},
|
weight: '18~30吨',
|
||||||
],
|
volume: '80~100方',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '13米',
|
||||||
|
weight: '25~35吨',
|
||||||
|
volume: '90~110方',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '13米7',
|
||||||
|
weight: '30~40吨',
|
||||||
|
volume: '100~120方',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '15米',
|
||||||
|
weight: '35~50吨',
|
||||||
|
volume: '120~150方',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '15米7',
|
||||||
|
weight: '40~55吨',
|
||||||
|
volume: '130~160方',
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
const listCx = ref(['厢式', '平板', '高栏', '飞翼车', '侧板可拆']);
|
||||||
|
const input = ref('');
|
||||||
|
const input1 = ref('');
|
||||||
|
const isReservation = ref(false);
|
||||||
|
const form = reactive({
|
||||||
|
date: '',
|
||||||
});
|
});
|
||||||
const formData = reactive({});
|
const form1 = reactive({
|
||||||
const paginations = reactive({
|
money: '3488',
|
||||||
page: 1,
|
money1: '3466',
|
||||||
size: 2,
|
goodsInformation: '补全货物信息,司机接单更快',
|
||||||
total: 0,
|
remarks: '请输入备注',
|
||||||
|
Telephone: '15687067900',
|
||||||
});
|
});
|
||||||
|
|
||||||
const dialogFormVisible = ref(false);
|
// #endregion
|
||||||
const formLabelWidth = ref('120px');
|
|
||||||
const currentTab = ref(0);
|
|
||||||
const currentChange = (current) => {
|
|
||||||
paginations.page = current;
|
|
||||||
getWarehouseList(currentTab.value + 1);
|
|
||||||
};
|
|
||||||
|
|
||||||
const getWarehouseList = (type) => {
|
/* --------------- methods --------------- */
|
||||||
warehouseList({ type: type, current: paginations.page, size: paginations.size }).then((res) => {
|
// #region
|
||||||
state.data = [];
|
onMounted(() => {
|
||||||
paginations.total = res.total;
|
// queryList();
|
||||||
if (res.code === 200) {
|
});
|
||||||
state.data = res.data.records;
|
|
||||||
for (let i in state.data) {
|
|
||||||
state.data[i].tag = state.data[i].tags.split(',');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
const toLink = (row) => {
|
const changeChoose = (type, index) => {
|
||||||
router.push({
|
if (type === 'cc') {
|
||||||
name: 'logistics-detail',
|
chooseMoney.value = index;
|
||||||
query: { id: row?.id ?? '100' },
|
activeCC.value = listCC.value[index];
|
||||||
});
|
} else {
|
||||||
};
|
chooseDate.value = index;
|
||||||
|
|
||||||
const shippingGoods = () => {
|
|
||||||
router.push({
|
|
||||||
name: 'logistics-shipping',
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
const contact = (id) => {
|
|
||||||
for (let i in state.data) {
|
|
||||||
if (state.data[i].id === id) {
|
|
||||||
state.query.current = state.data[i];
|
|
||||||
state.query.current.contactName = state.query.current.contactName.substring(0, 1);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
formData.value = {
|
|
||||||
warehouseId: state.query.current.id,
|
|
||||||
type: 1,
|
|
||||||
demand: '',
|
|
||||||
surname: '',
|
|
||||||
sex: '',
|
|
||||||
phoneNum: '',
|
|
||||||
};
|
|
||||||
dialogFormVisible.value = true;
|
|
||||||
};
|
};
|
||||||
|
const reservation = () => {
|
||||||
const priceConfirm = () => {
|
isReservation.value = !isReservation.value;
|
||||||
// 遍历 formData 的所有键
|
};
|
||||||
for (const key of Object.keys(formData.value)) {
|
const handleApply = () => {
|
||||||
if (formData.value[key] === '') {
|
//判断装货地址和卸货地址以及预约用车时间不能为空
|
||||||
ElMessage({
|
if (input.value == '') {
|
||||||
message: '请完整填写信息!',
|
ElMessage.error('请填写装货地址');
|
||||||
type: 'warning',
|
|
||||||
});
|
|
||||||
return; // 这里 return 会直接退出整个函数
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!/^1[3-9]\d{9}$/.test(formData.value.phoneNum)) {
|
|
||||||
ElMessage.warning('请填写正确的11位手机号码!');
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
getWarehouseInfo(formData.value).then((res) => {
|
if (input1.value == '') {
|
||||||
if (res.code === 200) {
|
ElMessage.error('请填写卸货地址');
|
||||||
ElMessage.success('询价成功,后续请关注手机信息,我们将第一时间联系您');
|
return;
|
||||||
} else {
|
}
|
||||||
ElMessage.error(res.errmsg);
|
if (form.date === '') {
|
||||||
}
|
ElMessage.error('请选择预约用车时间');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
router.push({
|
||||||
|
name: 'logistics-dispatch',
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
const openEt = (type) => {
|
||||||
// 级联选择器配置
|
dialogVisible.value = true;
|
||||||
const cascaderProps = ref({
|
if (type === 'bid') {
|
||||||
label: 'areaName', // 选项标签字段名
|
title.value = '改价';
|
||||||
value: 'areaCode', // 选项值字段名
|
isipt.value = 1;
|
||||||
children: 'areaChildVOS', // 子选项字段名
|
} else if (type === 'hwzl') {
|
||||||
emitPath: true,
|
title.value = '货物信息';
|
||||||
expandTrigger: 'hover',
|
isipt.value = 2;
|
||||||
});
|
} else if (type === 'lxfs') {
|
||||||
// 省市区数据(示例)
|
title.value = '联系方式';
|
||||||
const addressOptions = ref([]);
|
isipt.value = 4;
|
||||||
const getArea = async () => {
|
|
||||||
const res = await getRegion();
|
|
||||||
if (res.code === 200) {
|
|
||||||
addressOptions.value = res.data;
|
|
||||||
} else {
|
} else {
|
||||||
ElMessage.error(res.message);
|
title.value = '备注';
|
||||||
|
isipt.value = 3;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
const handleClose = () => {
|
||||||
onMounted(() => {
|
dialogVisible.value = false;
|
||||||
// getWarehouseList('1');
|
};
|
||||||
getArea();
|
const sbSure = () => {
|
||||||
});
|
//判断预估价不能低于系统底价
|
||||||
|
if (isipt.value == 1 && Number(form1.money) < Number(form1.money1)) {
|
||||||
|
ElMessage.error('预估价不能低于系统底价');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
dialogVisible.value = false;
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.el-form-item--large {
|
.choose {
|
||||||
--font-size: 20px;
|
|
||||||
}
|
|
||||||
.tabs {
|
|
||||||
//height: 160px;
|
|
||||||
line-height: 50px;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
|
||||||
font-size: 18px;
|
|
||||||
align-items: flex-start;
|
|
||||||
justify-content: space-between;
|
|
||||||
// padding: 0 20px;
|
|
||||||
}
|
|
||||||
.tabs0 {
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
.tab {
|
|
||||||
// height: 100px;
|
|
||||||
width: 850px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
overflow-x: auto;
|
font-size: 18px;
|
||||||
overflow: auto; /* 启用滚动 */
|
font-weight: 400;
|
||||||
white-space: nowrap; /* 强制单行显示 */
|
margin-bottom: 20px;
|
||||||
-ms-overflow-style: none; /* IE/Edge 兼容 */
|
&:last-child {
|
||||||
scrollbar-width: none; /* 隐藏滚动条 */
|
margin-bottom: 0;
|
||||||
.tab_list {
|
}
|
||||||
|
.searchType {
|
||||||
color: #999999;
|
color: #999999;
|
||||||
font-size: 20px;
|
margin: 0 30px;
|
||||||
font-weight: 400;
|
margin-left: 0;
|
||||||
}
|
}
|
||||||
.tab_list_li {
|
.chooseAll {
|
||||||
margin-left: 40px;
|
cursor: pointer;
|
||||||
color: #000000;
|
|
||||||
font-size: 20px;
|
|
||||||
font-weight: 400;
|
|
||||||
transition: color 0.3s ease;
|
|
||||||
}
|
}
|
||||||
.tab_list_li:first-child {
|
.chooseItem {
|
||||||
margin-left: 20px;
|
cursor: pointer;
|
||||||
|
margin-right: 20px;
|
||||||
}
|
}
|
||||||
.tab_list_li.active {
|
|
||||||
color: rgba(37, 191, 130, 1);
|
|
||||||
}
|
|
||||||
.tab_list_li0 {
|
|
||||||
position: relative;
|
|
||||||
transition: color 0.3s ease;
|
|
||||||
}
|
|
||||||
.tab_list_li0::after {
|
|
||||||
content: '';
|
|
||||||
position: absolute;
|
|
||||||
left: 25%;
|
|
||||||
bottom: 0;
|
|
||||||
width: 50%;
|
|
||||||
height: 4px;
|
|
||||||
background: rgba(37, 191, 130, 1);
|
|
||||||
border-radius: 4px;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.cursor {
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
}
|
||||||
.active {
|
.active {
|
||||||
color: rgba(37, 191, 130, 1);
|
color: #25bf82;
|
||||||
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
.content-box {
|
||||||
.warehouse-content-box {
|
|
||||||
min-height: 150px;
|
|
||||||
margin-top: 20px;
|
|
||||||
padding: 20px;
|
|
||||||
border-radius: 14px;
|
|
||||||
background-color: #fff;
|
|
||||||
display: flex;
|
|
||||||
gap: 20px;
|
|
||||||
}
|
|
||||||
.no-data {
|
|
||||||
flex-direction: row;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
.warehouse-content-box-left {
|
|
||||||
height: 120px;
|
|
||||||
width: 120px;
|
|
||||||
border-radius: 14px;
|
|
||||||
position: relative;
|
|
||||||
overflow: hidden;
|
|
||||||
img {
|
|
||||||
position: absolute;
|
|
||||||
top: 50%;
|
|
||||||
left: 50%;
|
|
||||||
transform: translate(-50%, -50%);
|
|
||||||
min-width: 100%;
|
|
||||||
min-height: 100%;
|
|
||||||
object-fit: cover;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.warehouse-content-box-center {
|
|
||||||
flex: 1;
|
|
||||||
text-align: left;
|
text-align: left;
|
||||||
.center-title {
|
.content-item {
|
||||||
font-size: 22px;
|
|
||||||
font-weight: bold;
|
|
||||||
text-align: left;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
.center-text {
|
|
||||||
font-size: 14px;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
margin-bottom: 10px;
|
justify-content: flex-start;
|
||||||
.center-text-lable {
|
align-items: center;
|
||||||
color: #666;
|
margin-bottom: 20px;
|
||||||
width: 70px;
|
.icon {
|
||||||
|
margin-right: 20px;
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
img {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.flex-1 {
|
.title {
|
||||||
flex: 1;
|
font-size: 16px;
|
||||||
|
color: #999;
|
||||||
}
|
}
|
||||||
.center-text-cont {
|
.content {
|
||||||
width: 120px;
|
font-size: 18px;
|
||||||
|
margin-left: 6px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.center-location {
|
.content-item1 {
|
||||||
font-size: 14px;
|
display: flex;
|
||||||
line-height: 20px;
|
justify-content: flex-start;
|
||||||
.el-icon {
|
align-items: center;
|
||||||
vertical-align: bottom;
|
cursor: pointer;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
.iconY {
|
||||||
|
width: 14px;
|
||||||
|
height: 14px;
|
||||||
|
border: 1px solid #999;
|
||||||
|
border-radius: 50%;
|
||||||
|
margin-right: 6px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.warehouse-content-box-right {
|
.content-box1 {
|
||||||
width: 160px;
|
text-align: left;
|
||||||
font-size: 20px;
|
.title {
|
||||||
display: flex;
|
font-size: 20px;
|
||||||
flex-direction: column;
|
margin-bottom: 6px;
|
||||||
align-items: flex-end;
|
|
||||||
justify-content: space-between;
|
|
||||||
.top-text {
|
|
||||||
font-size: 22px;
|
|
||||||
color: #25bf82;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
}
|
||||||
.right-button {
|
.bid {
|
||||||
width: 100%;
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
cursor: pointer;
|
||||||
|
.bid-right {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -160,11 +160,11 @@ const state = reactive({
|
|||||||
typeName: '高标准冷库',
|
typeName: '高标准冷库',
|
||||||
title: '孟定果蔬冷链中心',
|
title: '孟定果蔬冷链中心',
|
||||||
operationUnit: '临沧边境合作区管委会 ',
|
operationUnit: '临沧边境合作区管委会 ',
|
||||||
pricingUnit: '元/板·天',
|
pricingUnit: '元/吨·天',
|
||||||
storageArea: '5,000㎡',
|
storageArea: '5,000㎡',
|
||||||
usableArea: '1,200㎡',
|
usableArea: '1,200㎡',
|
||||||
location: '孟定海关监管区旁',
|
location: '孟定海关监管区旁',
|
||||||
price: '¥2.8元/板/月',
|
price: '¥2.8元/吨/月',
|
||||||
rank: '4',
|
rank: '4',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
Loading…
x
Reference in New Issue
Block a user