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

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

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