Commit 80452a41 authored by 何远江's avatar 何远江

添加错误信息、及订单项次检查

parent 25aa6dc3
......@@ -159,3 +159,15 @@ export const getVarSpecList = (productCode: any) => {
};
/**
* checkOrder
* @param orderItemId
* @returns
*/
export const getCheckOrder = (orderltemld: any) => {
return axios.get("/api/orderVar/checkOrder", {
params: { orderltemld }
});
};
......@@ -58,6 +58,7 @@
<template #default="{ row }">
<el-button type="text" size="small" @click="handleImportVar(row)">上传变量</el-button>
<el-button type="text" size="small" @click="handleShowVarRun(row)">查看解析</el-button>
<el-button type="text" size="small" @click="handleCheckOrder(row)">检查</el-button>
</template>
</vxe-column>
</vxe-table>
......@@ -114,6 +115,7 @@
</vxe-modal>
<TemplateVariable v-model:visible="tempVisible" v-bind="detailVariable" @download="download" />
<CheckOrder ref="checkOrderRef" />
</div>
</template>
......@@ -124,7 +126,8 @@ import {
apiOrderVarGetVars,
apiOrderVarGetOrderNewVars,
apiOrderVarSaveUpload,
apiOrderVarRun
apiOrderVarRun,
getCheckOrder
} from '@/api/var'
import type { VxeTableInstance } from 'vxe-table'
import TemplateVariable from './components/TemplateVariable.vue'
......@@ -133,6 +136,7 @@ import { uploadFile } from '@/api/excel'
import { ElLoading, ElMessage } from 'element-plus'
import { exportExcel } from '@/utils/export-excel'
import type { BookType } from 'xlsx'
import CheckOrder from './components/CheckOrder.vue'
const loading = ref(false)
const formState = reactive({
......@@ -147,6 +151,7 @@ const formState = reactive({
// order: 'desc'
})
const checkOrderRef = ref()
const xTable = ref<VxeTableInstance>()
const tableData = ref([])
......@@ -155,17 +160,21 @@ const tempVisible = ref(false)
const detailVariable = ref({
title: '变量文件解析',
titles: [],
data: []
data: [],
errors: []
})
const currentRow = ref()
const handleShowVarRun = async (row: any) => {
currentRow.value = row
const { data } = await apiOrderVarGetOrderNewVars(row.orderItemId)
const { res, titles } = filterVarData(data.result || [])
const { res, titles } = filterVarData(data.result.varOrders || [])
detailVariable.value.titles = titles
detailVariable.value.data = res
tempVisible.value = true
detailVariable.value.titles = titles as any
detailVariable.value.data = res as any
detailVariable.value.errors = data.result?.errors || []
nextTick(() => {
tempVisible.value = true
})
}
const importVisible = ref(false)
......@@ -262,6 +271,15 @@ const onReset = () => {
onQuery()
}
const handleCheckOrder = async (row) => {
const { data } = await getCheckOrder(row.orderItemId)
if (data.result?.success) {
ElMessage.success('检查无误!')
} else {
checkOrderRef.value.openModal(data.result.errors)
}
}
const onQuery = async (e?: any) => {
loading.value = true
e && (formState.currentPage = 1)
......
<template>
<vxe-modal
v-model="showEdit"
:z-index="1006"
@hide="onHide"
title="检查信息"
width="800"
esc-closable
mask-closable
show-footer
>
<div class="h-[400px] overflow-auto">
共计:{{ errors.length }} 条错误!
<el-alert style="margin-bottom: 4px;" v-for="(err,index) in errors" :key="index" :title="err" type="error" show-icon :closable="false" />
</div>
<template #footer>
<el-button type="primary" @click="showEdit = false">关闭</el-button>
</template>
</vxe-modal>
</template>
<script lang="ts" setup>
import { ref } from 'vue'
const showEdit = ref(false)
const errors = ref([])
const onHide = () => {
errors.value = []
}
const openModal = (errs) => {
showEdit.value = true
errors.value = errs || []
}
defineExpose({
openModal
})
</script>
<style lang="scss" scoped></style>
<template>
<vxe-modal
v-model="showEdit"
:z-index="1006"
@hide="onHide"
title="客户选择"
width="800"
esc-closable
mask-closable
show-footer
>
<template #default>
<el-dropdown placement="bottom-start" @command="handleExport">
<el-button type="primary" >导出数据</el-button>
<vxe-modal
v-model="showEdit"
:z-index="1006"
@hide="onHide"
title="模版变量详情"
width="800"
esc-closable
mask-closable
show-footer
>
<template #default>
<vxe-table v-if="errors.length" class="mb-2" border :data="errors" size="mini" height="200">
<vxe-column field="field" title="错误字段" width="120" />
<vxe-column field="message" title="错误信息" />
<vxe-column field="row" title="Row" width="120" />
</vxe-table>
<el-dropdown placement="bottom-start" @command="handleExport">
<el-button type="primary">导出数据</el-button>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item command="xlsx">*.xlsx</el-dropdown-item>
<el-dropdown-item command="txt">*.txt</el-dropdown-item>
<el-dropdown-item command="csv">*.csv</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
<vxe-table ref="xTable" border :data="data" size="small" height="400">
<vxe-column
v-for="column in titles"
:key="item"
:field="column"
:title="column"
></vxe-column>
</vxe-table>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item command="xlsx">*.xlsx</el-dropdown-item>
<el-dropdown-item command="txt">*.txt</el-dropdown-item>
<el-dropdown-item command="csv">*.csv</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
<vxe-table ref="xTable" border :data="data" size="small" height="400">
<vxe-column v-for="column in titles" :key="item" :field="column" :title="column"></vxe-column>
</vxe-table>
</template>
<template #footer>
<el-button type="primary" @click="showEdit = false">关闭</el-button>
</template>
</vxe-modal>
</template>
<script lang="ts">
import { defineComponent, ref, onMounted, reactive, watch, unref } from 'vue'
import { getCustomerPage } from '@/api/customer'
import type { VxeTableInstance } from 'vxe-table'
import { ElMessage } from 'element-plus'
export default defineComponent({
name: 'TemplateVariables',
props: {
visible: {
type: Boolean,
default: false
},
titles: {
type: Array,
default: () => []
},
data: {
type: Array,
default: () => []
}
},
emits: ['update:visible', 'download'],
setup(props, { emit }) {
const showEdit = ref(false)
const xTable = ref<VxeTableInstance>()
const tableData = ref([])
watch(
() => props.visible,
(val) => {
showEdit.value = val
}
)
const onHide = () => {
emit('update:visible', false)
}
</template>
const handleExport = (type: any) => {
emit('download', type)
}
return {
showEdit,
xTable,
tableData,
onHide,
handleExport
<template #footer>
<el-button type="primary" @click="showEdit = false">关闭</el-button>
</template>
</vxe-modal>
</template>
<script lang="ts">
import { defineComponent, ref, onMounted, reactive, watch, unref } from 'vue'
import { getCustomerPage } from '@/api/customer'
import type { VxeTableInstance } from 'vxe-table'
import { ElMessage } from 'element-plus'
export default defineComponent({
name: 'TemplateVariables',
props: {
visible: {
type: Boolean,
default: false
},
titles: {
type: Array,
default: () => []
},
data: {
type: Array,
default: () => []
},
errors: {
type: Array,
default: () => []
}
},
emits: ['update:visible', 'download'],
setup(props, { emit }) {
const showEdit = ref(false)
const xTable = ref<VxeTableInstance>()
const tableData = ref([])
watch(
() => props.visible,
(val) => {
showEdit.value = val
}
)
const onHide = () => {
emit('update:visible', false)
}
const handleExport = (type: any) => {
emit('download', type)
}
return {
showEdit,
xTable,
tableData,
onHide,
handleExport
}
})
</script>
<style lang="scss" scoped></style>
\ No newline at end of file
}
})
</script>
<style lang="scss" scoped></style>
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