You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

0 lines
25 KiB

1 month ago
  1. {"ast":null,"code":"import { ref, reactive, computed, onMounted, watch } from 'vue';\nimport { useRouter } from 'vue-router';\nimport { ElMessage } from 'element-plus';\nimport { InfoFilled } from '@element-plus/icons-vue';\nimport { createOrder, previewTransportFee, getLocations, getUserInfo } from '@/api/order';\nexport default {\n __name: 'OrderCreate',\n setup(__props, {\n expose: __expose\n }) {\n __expose();\n const router = useRouter();\n const formRef = ref(null);\n const loading = ref(false);\n const locations = ref([]);\n const feePreview = ref({\n baseTransportFee: 0,\n riskFee: 0,\n riskLevel: 1,\n totalFee: 0\n });\n const customerName = ref('');\n const customerError = ref('');\n const form = reactive({\n goodsName: '',\n // \n goodsQuantity: 1,\n // 1\n startLocationId: '',\n // ID\n endLocationId: '',\n // ID\n transferLocationIds: [],\n // ID\n baseTransportFee: 0,\n // 0\n customerId: '' // ID\n });\n const rules = {\n goodsName: [{\n required: true,\n message: '',\n trigger: 'blur'\n }],\n goodsQuantity: [{\n required: true,\n message: '',\n trigger: 'blur'\n }, {\n type: 'number',\n min: 1,\n message: '0',\n trigger: 'blur'\n }],\n startLocationId: [{\n required: true,\n message: '',\n trigger: 'change'\n }],\n endLocationId: [{\n required: true,\n message: '',\n trigger: 'change'\n }],\n baseTransportFee: [{\n required: true,\n message: '',\n trigger: 'blur'\n }, {\n type: 'number',\n min: 0.01,\n message: '0',\n trigger: 'blur'\n }],\n customerId: [{\n required: true,\n message: 'ID',\n trigger: 'blur'\n }, {\n type: 'number',\n min: 1,\n message: 'ID0',\n trigger: 'blur'\n }]\n };\n\n // \n const availableTransferLocations = computed(() => {\n return locations.value.filter(item => item.id !== form.startLocationId && item.id !== form.endLocationId);\n });\n\n // \n const loadLocations = async () => {\n try {\n const res = await getLocations();\n if (res.code === 200) {\n locations.value = res.data;\n }\n } catch (error) {\n console.error(':', error);\n ElMessage.error('');\n }\n };\n\n // \n const handleLocationChange = () => {\n // \n form.transferLocationIds = form.transferLocationIds.filter(id => id !== form.startLocationId && id !== form.endLocationId);\n handleFeePreview();\n };\n\n // \n const handleFeePreview = async () => {\n if (!form.baseTransportFee || form.baseTransportFee <= 0) return;\n try {\n const res = await previewTransportFee({\n baseFee: form.baseTransportFee,\n transferLocationIds: form.transferLocationIds,\n // API \n goodsQuantity: form.goodsQuantity\n });\n if (res.code === 200) {\n feePreview.value = res.data;\n }\n } catch (error) {\n console.error(':', error);\n ElMessage.error('');\n }\n };\n\n // \n const getRiskLevelTip = level => {\n const tips = {\n 1: '',\n