Commit deebc36e by linjinhong

添加podcn订单

parent 30bcb9a9
...@@ -67,6 +67,13 @@ const router = createRouter({ ...@@ -67,6 +67,13 @@ const router = createRouter({
component: PodOrderList, component: PodOrderList,
}, },
{ {
path: '/pod-us-order/podCNlist',
meta: {
title: 'POD订单(CN)',
},
component: () => import('@/views/order/podCN/index.vue'),
},
{
path: '/pod-us-order/list', path: '/pod-us-order/list',
meta: { meta: {
title: 'POD订单(US)', title: 'POD订单(US)',
......
...@@ -113,13 +113,19 @@ const menu: MenuItem[] = [ ...@@ -113,13 +113,19 @@ const menu: MenuItem[] = [
label: 'POD订单', label: 'POD订单',
}, },
{ {
index: '/pod-us-order/podCNlist',
id: 6,
label: 'POD订单(CN)',
},
{
index: '/pod-us-order/list', index: '/pod-us-order/list',
id: 8, id: 8,
label: 'POD订单(US)', label: 'POD订单(US)',
}, },
{ {
index: '/pod-us-order/orderTracking', index: '/pod-us-order/orderTracking',
id: 8, id: 9,
label: 'POD(US)订单跟踪', label: 'POD(US)订单跟踪',
}, },
], ],
......
<template>
<el-dialog
title="处理结果"
v-model="resultDialog"
width="600px"
:close-on-click-modal="false"
@closed="closedFn"
>
<div style="display: flex">
<el-checkbox
:indeterminate="isIndeterminate"
v-model="checkAll"
@change="checkAllChange"
>
{{ '全选' }}
</el-checkbox>
<el-button
type="success"
style="margin-left: 20px"
@click="resultfilter(true)"
>
{{ '选择正常' }}
</el-button>
<el-button type="danger" @click="resultfilter(false)">
{{ '选择异常' }}
</el-button>
<el-button type="success" @click="copyAllCode('factoryOrderNumber')">
{{ '复制工厂订单号' }}
</el-button>
</div>
<div style="height: 50vh; overflow: auto">
<div style="margin: 15px 0"></div>
<el-checkbox-group v-model="selectedList" @change="checkChange">
<div style="display: block" v-for="(item, index) in list" :key="index">
<el-checkbox :value="item">
{{ '工厂订单号:' + item.factoryOrderNumber + ' ' + item.message }}
</el-checkbox>
</div>
</el-checkbox-group>
</div>
<template #footer>
<div style="display: flex; justify-content: flex-end">
<!-- <el-button @click="resultDialog = false"> 取 消 </el-button>
<div style="width: 50px; display: inline-block"></div> -->
<el-button type="primary" @click="confirm"> 确 定 </el-button>
</div>
</template>
</el-dialog>
</template>
<script lang="ts" setup>
import { ref, watch } from 'vue'
import { copyText } from '@/utils/index'
interface IList {
id: string | number
shopNumber?: string
factoryOrderNumber?: string
message: string
status: boolean
}
const props = withDefaults(
defineProps<{
list: IList[]
}>(),
{
list: () => [],
},
)
// 响应式数据
const resultDialog = ref(false)
const isIndeterminate = ref(false)
const checkAll = ref(false)
const selectedList = ref<IList[]>([])
let key = ''
// 显示弹窗
const showDialog = (type?: string) => {
key = type || ''
resultDialog.value = true
selectedList.value = []
checkAll.value = false
}
// 全选状态改变
const checkAllChange = (value: boolean) => {
selectedList.value = value ? props.list : []
isIndeterminate.value = false
}
// 单个选择改变
const checkChange = () => {
const checkedCount = selectedList.value.length
checkAll.value = checkedCount === props.list.length
isIndeterminate.value = checkedCount > 0 && checkedCount < props.list.length
}
// 确认选择
const confirm = () => {
resultDialog.value = false
// emits('confirm', selectedList.value)
}
// 结果过滤
const resultfilter = (bool: boolean) => {
const arr = props.list.filter((item) => item.status === bool)
selectedList.value = arr
const checkedCount = arr.length
console.log(112, checkedCount)
console.log(113, props.list)
checkAll.value = checkedCount === props.list.length
isIndeterminate.value = checkedCount > 0 && checkedCount < props.list.length
}
// 复制店铺单号
const copyAllCode = (field: string) => {
if (!selectedList.value.length) {
return ElMessage.warning('请先选择数据')
}
const str = selectedList.value.map((el) => el[field as keyof IList]).join(',')
console.log('复制店铺单号', str)
copyText(str)
}
function closedFn() {
if (key === 'stockOut') return
emits('confirm', selectedList.value)
}
// 监听弹窗状态
watch(
() => resultDialog.value,
(v) => {
console.log(v)
},
)
watch(
() => props.list,
(v) => {
if (v.length) {
console.log(127, v)
resultfilter(true)
}
},
)
defineExpose({
showDialog,
})
const emits = defineEmits<{
(e: 'confirm', data: IList[]): void
}>()
</script>
<style lang="scss" scoped></style>
<script setup lang="ts">
import { defineModel } from 'vue'
import { updateAddressApi } from '@/api/podUsOrder.ts'
import {AddressInfo} from '@/types/api/podUsOrder.ts'
const emits = defineEmits(['success'])
defineProps<{
countryList: { countryCode: string }[]
}>()
const visible = defineModel<boolean>('visible')
const form = defineModel<AddressInfo>('form', {
default: {
receiverName: '',
receiverPhone: '',
receiverCountry: '',
receiverProvince: '',
receiverCity: '',
receiverDistrict: '',
receiverAddress1: '',
receiverAddress2: '',
receiverPostCode: '',
},
})
const formRef = ref()
const rules = {
receiverName: [{ required: true, message: '请输入姓名', trigger: 'blur' }],
receiverPhone: [{ required: true, message: '请输入电话', trigger: 'blur' }],
receiverCountry: [{ required: true, message: '请输入国家', trigger: 'blur' }],
receiverProvince: [
{ required: true, message: '请输入省/州', trigger: 'blur' },
],
receiverCity: [{ required: true, message: '请输入市', trigger: 'blur' }],
receiverAddress1: [
{ required: true, message: '请输入地址1', trigger: 'blur' },
],
receiverPostCode: [
{ required: true, message: '请输入邮政编码', trigger: 'blur' },
],
}
const submitForm = async () => {
formRef?.value.validate(async (valid: boolean) => {
if (valid) {
await updateAddressApi(form.value as never)
visible.value = false
emits('success')
await ElMessageBox.alert(
'请修改/刷新地址后取消物流或者更换物流在重新创建物流订单、获取跟踪号、获取打印面单',
'提示',
{
type: 'warning',
confirmButtonText: '确定',
cancelButtonText: '取消',
showCancelButton: true,
},
)
}
})
}
</script>
<template>
<el-dialog
v-model="visible"
:close-on-click-modal="false"
title="修改揽收信息"
width="50%"
>
<el-form ref="formRef" :model="form" :rules="rules" label-width="120px">
<el-form-item label="姓名" prop="receiverName">
<el-input
v-model="form.receiverName"
clearable
placeholder="请输入姓名"
/>
</el-form-item>
<el-form-item label="电话" prop="receiverPhone">
<el-input
v-model="form.receiverPhone"
clearable
placeholder="请输入电话"
/>
</el-form-item>
<el-form-item label="国家" prop="receiverCountry">
<el-select v-model="form.receiverCountry" clearable filterable>
<el-option
v-for="it in countryList"
:key="it.countryCode"
:label="it.countryCode"
:value="it.countryCode"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="省/州" prop="receiverProvince">
<el-input
v-model="form.receiverProvince"
clearable
placeholder="请输入省/州"
/>
</el-form-item>
<el-form-item label="市" prop="receiverCity">
<el-input
v-model="form.receiverCity"
clearable
placeholder="请输入市"
/>
</el-form-item>
<el-form-item label="区/县" prop="receiverDistrict">
<el-input
v-model="form.receiverDistrict"
clearable
placeholder="请输入区/县"
/>
</el-form-item>
<el-form-item label="地址1" prop="receiverAddress1">
<el-input
v-model="form.receiverAddress1"
clearable
placeholder="请输入地址1"
/>
</el-form-item>
<el-form-item label="地址2" prop="receiverAddress2">
<el-input
v-model="form.receiverAddress2"
clearable
placeholder="请输入地址2"
/>
</el-form-item>
<el-form-item label="邮政编码" prop="receiverPostCode">
<el-input
v-model="form.receiverPostCode"
clearable
placeholder="请输入邮政编码"
/>
</el-form-item>
</el-form>
<template #footer>
<el-button @click="visible = false">取消</el-button>
<el-button type="primary" @click="submitForm">提交</el-button>
</template>
</el-dialog>
</template>
<style scoped lang="scss"></style>
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment