|
|
@@ -240,7 +240,7 @@
|
|
|
label-width="120px"
|
|
|
class="delivery-form"
|
|
|
>
|
|
|
- <div class="item-info-grid-3">
|
|
|
+ <div class="item-info-grid-2">
|
|
|
<el-form-item label="上门时间:" prop="pickupTime" required>
|
|
|
<PickupTimeCascader
|
|
|
v-model="deliveryForm.pickupTime"
|
|
|
@@ -283,7 +283,7 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
- <!-- 物品信息 -->
|
|
|
+ <!-- 物品信息(修改后) -->
|
|
|
<div class="form-card full-width">
|
|
|
<div class="card-header with-blue-line">
|
|
|
<div class="blue-line"></div>
|
|
|
@@ -298,37 +298,40 @@
|
|
|
label-width="120px"
|
|
|
class="item-info-form"
|
|
|
>
|
|
|
- <div class="item-info-grid-1">
|
|
|
- <el-form-item label="物品类型:" prop="type" required>
|
|
|
- <el-input
|
|
|
+ <div class="item-info-grid-2">
|
|
|
+ <!-- 物品类型改为下拉选择框,使用数据字典 jd_goods_type -->
|
|
|
+ <el-form-item label="物品类型:" prop="type" required class="fixed-input">
|
|
|
+ <el-select
|
|
|
v-model="itemInfo.type"
|
|
|
- placeholder="请输入物品类型"
|
|
|
+ placeholder="请选择物品类型"
|
|
|
size="large"
|
|
|
clearable
|
|
|
class="fixed-input"
|
|
|
- maxlength="50"
|
|
|
- show-word-limit
|
|
|
- />
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="dict in jd_goods_type"
|
|
|
+ :key="dict.value"
|
|
|
+ :label="dict.label"
|
|
|
+ :value="dict.value"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
</el-form-item>
|
|
|
- </div>
|
|
|
- <div class="item-info-grid-3">
|
|
|
<el-form-item label="总重量 (kg):" prop="weight" required>
|
|
|
<el-input-number
|
|
|
v-model="itemInfo.weight"
|
|
|
:min="0.1"
|
|
|
- :max="1000"
|
|
|
:step="0.1"
|
|
|
size="large"
|
|
|
controls-position="right"
|
|
|
class="fixed-input"
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
-
|
|
|
+ </div>
|
|
|
+ <div class="item-info-grid-2">
|
|
|
<el-form-item label="总体积 (m³):" prop="volume" required>
|
|
|
<el-input-number
|
|
|
v-model="itemInfo.volume"
|
|
|
:min="0.001"
|
|
|
- :max="100"
|
|
|
:step="0.001"
|
|
|
size="large"
|
|
|
controls-position="right"
|
|
|
@@ -340,7 +343,6 @@
|
|
|
<el-input-number
|
|
|
v-model="itemInfo.quantity"
|
|
|
:min="1"
|
|
|
- :max="999"
|
|
|
:step="1"
|
|
|
size="large"
|
|
|
controls-position="right"
|
|
|
@@ -477,7 +479,8 @@ import { addBook } from "@/api/logistics/book"
|
|
|
import { addOrder } from "@/api/logistics/order"
|
|
|
|
|
|
const { proxy } = getCurrentInstance()
|
|
|
-const { jd_logistics_product_code, sf_logistics_product_code } = proxy.useDict("jd_logistics_product_code", "sf_logistics_product_code")
|
|
|
+const { jd_logistics_product_code, sf_logistics_product_code, jd_goods_type } =
|
|
|
+ proxy.useDict("jd_logistics_product_code", "sf_logistics_product_code","jd_goods_type")
|
|
|
|
|
|
import { useRoute } from 'vue-router';
|
|
|
import { updateBook, getDefaultAddress, getAddressInfo } from "../../../api/logistics/book.js";
|
|
|
@@ -635,8 +638,7 @@ const receiverRules = {
|
|
|
|
|
|
const itemInfoRules = {
|
|
|
type: [
|
|
|
- { required: true, message: '请输入物品类型', trigger: 'blur' },
|
|
|
- { min: 1, max: 50, message: '物品类型长度在1-50个字符之间', trigger: 'blur' }
|
|
|
+ { required: true, message: '请选择物品类型', trigger: 'change' }, // 触发方式改为 change
|
|
|
],
|
|
|
weight: [
|
|
|
{ required: true, message: '请输入总重量', trigger: 'blur' },
|
|
|
@@ -1025,6 +1027,23 @@ const validateFormData = () => {
|
|
|
return isValid
|
|
|
}
|
|
|
|
|
|
+// 监听字典数据,当有值且当前未选择时,设置默认选中第一个
|
|
|
+watch(jd_logistics_product_code, (val) => {
|
|
|
+ if (productType.value === '1' && val && val.length > 0 && !deliveryForm.expressType) {
|
|
|
+ deliveryForm.expressType = val[0].value;
|
|
|
+ }
|
|
|
+});
|
|
|
+watch(sf_logistics_product_code, (val) => {
|
|
|
+ if (productType.value === '2' && val && val.length > 0 && !deliveryForm.expressType) {
|
|
|
+ deliveryForm.expressType = val[0].value;
|
|
|
+ }
|
|
|
+});
|
|
|
+watch(jd_goods_type, (val) => {
|
|
|
+ if (val && val.length > 0 && !itemInfo.type) {
|
|
|
+ itemInfo.type = val[0].value;
|
|
|
+ }
|
|
|
+});
|
|
|
+
|
|
|
function close() {
|
|
|
const obj = { path: "/waybill/order" }
|
|
|
proxy.$tab.closeOpenPage(obj)
|
|
|
@@ -1131,7 +1150,7 @@ const submitOrder = async () => {
|
|
|
receiverCity: receiver.cityName,
|
|
|
receiverCounty: receiver.countyName,
|
|
|
receiverAddress: receiver.detailedAddress,
|
|
|
- goodsName: itemInfo.type,
|
|
|
+ goodsName: itemInfo.type, // 物品类型值
|
|
|
goodsWeight: itemInfo.weight,
|
|
|
goodsVolume: itemInfo.volume,
|
|
|
goodsQty: itemInfo.quantity,
|
|
|
@@ -1228,6 +1247,7 @@ onMounted(() => {
|
|
|
</script>
|
|
|
|
|
|
<style scoped>
|
|
|
+/* 样式保持不变,与原来一致 */
|
|
|
.express-order-page {
|
|
|
width: 100%;
|
|
|
padding: 20px;
|
|
|
@@ -1347,6 +1367,7 @@ onMounted(() => {
|
|
|
background: #F5F7FA;
|
|
|
width: 100%;
|
|
|
box-sizing: border-box;
|
|
|
+ text-align: left !important;
|
|
|
}
|
|
|
|
|
|
/* 统一筛选框样式 */
|
|
|
@@ -1469,8 +1490,8 @@ onMounted(() => {
|
|
|
|
|
|
/* 调整el-input-number的特殊样式 */
|
|
|
:deep(.fixed-input .el-input-number) {
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
+ //display: flex;
|
|
|
+ //align-items: center;
|
|
|
}
|
|
|
|
|
|
:deep(.fixed-input .el-input-number .el-input-number__decrease),
|
|
|
@@ -1606,6 +1627,13 @@ onMounted(() => {
|
|
|
gap: 20px;
|
|
|
}
|
|
|
|
|
|
+/* 物品信息网格布局 */
|
|
|
+.item-info-grid-2 {
|
|
|
+ display: grid;
|
|
|
+ grid-template-columns: repeat(2, 1fr);
|
|
|
+ gap: 20px;
|
|
|
+}
|
|
|
+
|
|
|
/* 增值服务样式调整 */
|
|
|
.value-services-grid {
|
|
|
display: grid;
|