1
This commit is contained in:
1 parent
dc774cca99
commit
5dd0342a3f
4 files changed
+132
-92
No files matched your search
@@ -23,6 +23,18 @@ export function pageJoin(query: any) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function noRecogPageJoin(query: any) {
|
||||||
|
return request({
|
||||||
|
url: "/hard/hard-order/no-recog/page-join",
|
||||||
|
method: "post",
|
||||||
|
params: {
|
||||||
|
current: query.current,
|
||||||
|
size: query.size,
|
||||||
|
},
|
||||||
|
data: query,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
export function fetchList(query?: Object) {
|
export function fetchList(query?: Object) {
|
||||||
return request({
|
return request({
|
||||||
url: "/hard/hard-order/page",
|
url: "/hard/hard-order/page",
|
||||||
|
|||||||
@@ -5,56 +5,76 @@
|
|||||||
<el-timeline>
|
<el-timeline>
|
||||||
<el-timeline-item placement="top">
|
<el-timeline-item placement="top">
|
||||||
<div class="el-timeline-right-content">
|
<div class="el-timeline-right-content">
|
||||||
<el-tag type="info" style="width: 120px">用户授权</el-tag>
|
<div>
|
||||||
<span class="color-primary ml-2">{{ detail.createTime }}</span>
|
<el-tag type="info" style="width: 120px">用户授权</el-tag>
|
||||||
|
<span class="color-primary ml-2">{{ detail.createTime }}</span>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div class="flow_coll">
|
||||||
|
<span>授权用户:</span>
|
||||||
|
<span>{{ detail.username }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-timeline-item>
|
</el-timeline-item>
|
||||||
</el-timeline>
|
</el-timeline>
|
||||||
<el-timeline v-if="detail.requestOpenTime">
|
<el-timeline v-if="detail.requestOpenTime">
|
||||||
<el-timeline-item placement="top">
|
<el-timeline-item placement="top">
|
||||||
<div class="el-timeline-right-content">
|
<div class="el-timeline-right-content">
|
||||||
<el-tag type="info" style="width: 120px">智能柜申请开门</el-tag>
|
<div>
|
||||||
<span class="color-primary ml-2">{{ detail.requestOpenTime }}</span>
|
<el-tag type="info" style="width: 120px">智能柜申请开门</el-tag>
|
||||||
|
<span class="color-primary ml-2">{{ detail.requestOpenTime }}</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-timeline-item>
|
</el-timeline-item>
|
||||||
</el-timeline>
|
</el-timeline>
|
||||||
<el-timeline v-if="detail.openCallbackTime">
|
<el-timeline v-if="detail.openCallbackTime">
|
||||||
<el-timeline-item placement="top">
|
<el-timeline-item placement="top">
|
||||||
<div class="el-timeline-right-content">
|
<div class="el-timeline-right-content">
|
||||||
<el-tag type="info" style="width: 120px">智能柜开门响应</el-tag>
|
<div>
|
||||||
<span class="color-primary ml-2">{{ detail.openCallbackTime }}</span>
|
<el-tag type="info" style="width: 120px">智能柜开门响应</el-tag>
|
||||||
|
<span class="color-primary ml-2">{{ detail.openCallbackTime }}</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-timeline-item>
|
</el-timeline-item>
|
||||||
</el-timeline>
|
</el-timeline>
|
||||||
<el-timeline v-if="detail.videoCallbackTime">
|
<el-timeline v-if="detail.videoCallbackTime">
|
||||||
<el-timeline-item placement="top">
|
<el-timeline-item placement="top">
|
||||||
<div class="el-timeline-right-content">
|
<div class="el-timeline-right-content">
|
||||||
<el-tag type="info" style="width: 120px">智能柜视频回调</el-tag>
|
<div>
|
||||||
<span class="color-primary ml-2">{{ detail.videoCallbackTime }}</span>
|
<el-tag type="info" style="width: 120px">智能柜视频回调</el-tag>
|
||||||
|
<span class="color-primary ml-2">{{ detail.videoCallbackTime }}</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-timeline-item>
|
</el-timeline-item>
|
||||||
</el-timeline>
|
</el-timeline>
|
||||||
<el-timeline v-if="detail.skuSubmitTime">
|
<el-timeline v-if="detail.skuSubmitTime">
|
||||||
<el-timeline-item placement="top">
|
<el-timeline-item placement="top">
|
||||||
<div class="el-timeline-right-content">
|
<div class="el-timeline-right-content">
|
||||||
<el-tag type="info" style="width: 120px">商品提交识别</el-tag>
|
<div>
|
||||||
<span class="color-primary ml-2">{{ detail.skuSubmitTime }}</span>
|
<el-tag type="info" style="width: 120px">商品提交识别</el-tag>
|
||||||
|
<span class="color-primary ml-2">{{ detail.skuSubmitTime }}</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-timeline-item>
|
</el-timeline-item>
|
||||||
</el-timeline>
|
</el-timeline>
|
||||||
<el-timeline v-if="detail.skuCallbackTime">
|
<el-timeline v-if="detail.skuCallbackTime">
|
||||||
<el-timeline-item placement="top">
|
<el-timeline-item placement="top">
|
||||||
<div class="el-timeline-right-content">
|
<div class="el-timeline-right-content">
|
||||||
<el-tag type="info" style="width: 120px">商品识别响应</el-tag>
|
<div>
|
||||||
<span class="color-primary ml-2">{{ detail.skuCallbackTime }}</span>
|
<el-tag type="info" style="width: 120px">商品识别响应</el-tag>
|
||||||
|
<span class="color-primary ml-2">{{ detail.skuCallbackTime }}</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-timeline-item>
|
</el-timeline-item>
|
||||||
</el-timeline>
|
</el-timeline>
|
||||||
<el-timeline v-if="detail.payTime">
|
<el-timeline v-if="detail.payTime">
|
||||||
<el-timeline-item placement="top">
|
<el-timeline-item placement="top">
|
||||||
<div class="el-timeline-right-content">
|
<div class="el-timeline-right-content">
|
||||||
<el-tag type="info" style="width: 120px">订单结算</el-tag>
|
<div>
|
||||||
<span class="color-primary ml-2">{{ detail.payTime }}</span>
|
<el-tag type="info" style="width: 120px">订单结算</el-tag>
|
||||||
|
<span class="color-primary ml-2">{{ detail.payTime }}</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-timeline-item>
|
</el-timeline-item>
|
||||||
</el-timeline>
|
</el-timeline>
|
||||||
@@ -63,7 +83,8 @@
|
|||||||
<div class="el-timeline-right-content">
|
<div class="el-timeline-right-content">
|
||||||
<el-tag type="danger" style="width: 120px">错误</el-tag>
|
<el-tag type="danger" style="width: 120px">错误</el-tag>
|
||||||
<span class="color-danger ml-2">{{ detail.errorDesc }}</span>
|
<span class="color-danger ml-2">{{ detail.errorDesc }}</span>
|
||||||
<el-button v-if="!detail?.hardAuth?.manualChangeUserId" class="ml-2" link @click="visibleErrorChangeDiaog = true">
|
<el-button v-if="!detail?.hardAuth?.manualChangeUserId" class="ml-2" link
|
||||||
|
@click="visibleErrorChangeDiaog = true">
|
||||||
处理
|
处理
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
@@ -84,15 +105,10 @@
|
|||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
</el-descriptions>
|
</el-descriptions>
|
||||||
|
|
||||||
<el-dialog
|
<el-dialog title="手动处理智能柜订单" width="30%" @close="dialogClose" v-model="visibleErrorChangeDiaog"
|
||||||
title="手动处理智能柜订单"
|
:close-on-click-modal="false" draggable>
|
||||||
width="30%"
|
<el-form ref="formRef" :model="form" :rules="dataRules" formDialogRef label-width="90px"
|
||||||
@close="dialogClose"
|
v-loading="formLoading">
|
||||||
v-model="visibleErrorChangeDiaog"
|
|
||||||
:close-on-click-modal="false"
|
|
||||||
draggable
|
|
||||||
>
|
|
||||||
<el-form ref="formRef" :model="form" :rules="dataRules" formDialogRef label-width="90px" v-loading="formLoading">
|
|
||||||
<el-row :gutter="24">
|
<el-row :gutter="24">
|
||||||
<el-col :span="24" class="mb20">
|
<el-col :span="24" class="mb20">
|
||||||
<el-form-item label="设备名" prop="image">
|
<el-form-item label="设备名" prop="image">
|
||||||
@@ -101,7 +117,8 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="24" class="mb20">
|
<el-col :span="24" class="mb20">
|
||||||
<el-form-item label="处理原因" prop="remark">
|
<el-form-item label="处理原因" prop="remark">
|
||||||
<el-input v-model="form.remark" placeholder="请输入处理原因" type="textarea" :autosize="{ minRows: 6 }" />
|
<el-input v-model="form.remark" placeholder="请输入处理原因" type="textarea"
|
||||||
|
:autosize="{ minRows: 6 }" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@@ -171,7 +188,7 @@ const dialogClose = async () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const onSubmit = async () => {
|
const onSubmit = async () => {
|
||||||
const valid = await formRef.value.validate().catch(() => {})
|
const valid = await formRef.value.validate().catch(() => { })
|
||||||
if (!valid) return false
|
if (!valid) return false
|
||||||
try {
|
try {
|
||||||
formLoading.value = true
|
formLoading.value = true
|
||||||
@@ -189,7 +206,32 @@ onMounted(() => {
|
|||||||
getFlow()
|
getFlow()
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
.flow_coll {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
span {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
span:nth-child(1) {
|
||||||
|
display: inline-block;
|
||||||
|
width: 80px;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
span:nth-child(2) {
|
||||||
|
display: inline-block;
|
||||||
|
flex: 1;
|
||||||
|
min-width: 50px;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 时间线样式调整
|
// 时间线样式调整
|
||||||
:deep(.el-timeline) {
|
:deep(.el-timeline) {
|
||||||
margin: 10px 0 0 160px;
|
margin: 10px 0 0 160px;
|
||||||
@@ -207,16 +249,17 @@ onMounted(() => {
|
|||||||
|
|
||||||
.el-timeline-right-content {
|
.el-timeline-right-content {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
flex-direction: column;
|
||||||
|
align-items: flex-start;
|
||||||
min-height: 30px;
|
min-height: 30px;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
background-color: #409eff;
|
background-color: #b0d8ff;
|
||||||
|
|
||||||
&::before {
|
&::before {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 10px;
|
top: 10px;
|
||||||
left: 13px;
|
left: 13px;
|
||||||
border-color: transparent #409eff transparent transparent;
|
border-color: transparent #b0d8ff transparent transparent;
|
||||||
border-style: solid;
|
border-style: solid;
|
||||||
border-width: 8px;
|
border-width: 8px;
|
||||||
content: "";
|
content: "";
|
||||||
@@ -232,7 +275,7 @@ onMounted(() => {
|
|||||||
width: 20px;
|
width: 20px;
|
||||||
height: 20px;
|
height: 20px;
|
||||||
font-size: 10px;
|
font-size: 10px;
|
||||||
background: #409eff;
|
background: #b0d8ff;
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ const openDialog = async (id: string) => {
|
|||||||
|
|
||||||
// 提交
|
// 提交
|
||||||
const onSubmit = async () => {
|
const onSubmit = async () => {
|
||||||
const valid = await dataFormRef.value.validate().catch(() => {})
|
const valid = await dataFormRef.value.validate().catch(() => { })
|
||||||
if (!valid) return false
|
if (!valid) return false
|
||||||
try {
|
try {
|
||||||
loading.value = true
|
loading.value = true
|
||||||
|
|||||||
@@ -19,10 +19,13 @@
|
|||||||
<dict-select v-model="state.queryForm.hourType" dict-code="daily_menu" />
|
<dict-select v-model="state.queryForm.hourType" dict-code="daily_menu" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item style="width: 450px" label="创建时间" prop="payTimeList">
|
<el-form-item style="width: 450px" label="创建时间" prop="payTimeList">
|
||||||
<el-date-picker v-model="state.queryForm.payTimeList" value-format="YYYY-MM-DD HH:mm:ss" type="datetimerange" />
|
<el-date-picker v-model="state.queryForm.payTimeList" value-format="YYYY-MM-DD HH:mm:ss"
|
||||||
|
type="datetimerange" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button icon="Search" type="primary" @click="getDataList">{{ $t("common.queryBtn") }}</el-button>
|
<el-button icon="Search" type="primary" @click="getDataList">
|
||||||
|
{{ $t("common.queryBtn") }}
|
||||||
|
</el-button>
|
||||||
<el-button icon="Refresh" @click="resetQuery">{{ $t("common.resetBtn") }}</el-button>
|
<el-button icon="Refresh" @click="resetQuery">{{ $t("common.resetBtn") }}</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-row>
|
</el-row>
|
||||||
@@ -31,34 +34,22 @@
|
|||||||
<el-row>
|
<el-row>
|
||||||
<!-- :export="'sys_audit_export'" -->
|
<!-- :export="'sys_audit_export'" -->
|
||||||
<div class="mb8" style="width: 100%">
|
<div class="mb8" style="width: 100%">
|
||||||
<right-toolbar
|
<right-toolbar v-model:showSearch="showSearch" @exportExcel="exportExcel" @queryTable="getDataList"
|
||||||
v-model:showSearch="showSearch"
|
class="ml10 mr20" style="float: right" />
|
||||||
@exportExcel="exportExcel"
|
|
||||||
@queryTable="getDataList"
|
|
||||||
class="ml10 mr20"
|
|
||||||
style="float: right"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<el-table
|
<el-table :data="state.dataList" v-loading="state.loading" border :cell-style="tableStyle.cellStyle"
|
||||||
:data="state.dataList"
|
:header-cell-style="tableStyle.headerCellStyle" @selection-change="selectionChangHandle"
|
||||||
v-loading="state.loading"
|
@sort-change="sortChangeHandle" :show-summary="false" :summary-method="getSummaries">
|
||||||
border
|
|
||||||
:cell-style="tableStyle.cellStyle"
|
|
||||||
:header-cell-style="tableStyle.headerCellStyle"
|
|
||||||
@selection-change="selectionChangHandle"
|
|
||||||
@sort-change="sortChangeHandle"
|
|
||||||
:show-summary="false"
|
|
||||||
:summary-method="getSummaries"
|
|
||||||
>
|
|
||||||
<el-table-column type="selection" width="60" align="center" />
|
<el-table-column type="selection" width="60" align="center" />
|
||||||
<el-table-column type="index" label="#" width="50" />
|
<el-table-column type="index" label="#" width="50" />
|
||||||
<el-table-column width="200" label="用户">
|
<el-table-column width="200" label="用户">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<div class="flex flex-row items-center justify-center">
|
<div class="flex flex-row items-center justify-center">
|
||||||
<preview-image width="50px" height="50px" :src="row.userAvatar" />
|
<preview-image width="50px" height="50px" :src="row.userAvatar" />
|
||||||
<div class="flex flex-col ml-2 items-start cursor-pointer hover:underline hover:text-blue-500">
|
<div
|
||||||
|
class="flex flex-col ml-2 items-start cursor-pointer hover:underline hover:text-blue-500">
|
||||||
<span> {{ row.username }}</span>
|
<span> {{ row.username }}</span>
|
||||||
<span> {{ row.userMobile }}</span>
|
<span> {{ row.userMobile }}</span>
|
||||||
</div>
|
</div>
|
||||||
@@ -185,20 +176,15 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column fixed="right" label="操作" width="200">
|
<el-table-column fixed="right" label="操作" width="200">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-button
|
<el-button v-if="row.orderStatus == 2" icon="VideoPlay" v-auth="'hard_hardwareOrder_offlinePay'"
|
||||||
v-if="row.orderStatus == 2"
|
text @click="submitPay(row)" type="primary">
|
||||||
icon="VideoPlay"
|
|
||||||
v-auth="'hard_hardwareOrder_offlinePay'"
|
|
||||||
text
|
|
||||||
@click="submitPay(row)"
|
|
||||||
type="primary"
|
|
||||||
>
|
|
||||||
确认支付
|
确认支付
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
<pagination @size-change="sizeChangeHandle" @current-change="currentChangeHandle" v-bind="state.pagination" />
|
<pagination @size-change="sizeChangeHandle" @current-change="currentChangeHandle"
|
||||||
|
v-bind="state.pagination" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -206,12 +192,11 @@
|
|||||||
<script setup lang="ts" name="systemHardwareOrder">
|
<script setup lang="ts" name="systemHardwareOrder">
|
||||||
import { BasicTableProps, useTable } from "/@/hooks/table"
|
import { BasicTableProps, useTable } from "/@/hooks/table"
|
||||||
import * as hardOrder from "/@/api/hard/hard-order"
|
import * as hardOrder from "/@/api/hard/hard-order"
|
||||||
import * as hardInvoice from "/@/api/hard/hard-invoice"
|
|
||||||
import { getDicts } from "/@/api/admin/dict"
|
import { getDicts } from "/@/api/admin/dict"
|
||||||
import { useMessage, useMessageBox } from "/@/hooks/message"
|
import { useMessage, useMessageBox } from "/@/hooks/message"
|
||||||
import { useDict } from "/@/hooks/dict"
|
import { useDict } from "/@/hooks/dict"
|
||||||
import { displayPrice } from "/@/utils/formatMoney"
|
import { displayPrice } from "/@/utils/formatMoney"
|
||||||
import { ElLoading, TableColumnCtx } from "element-plus"
|
import { TableColumnCtx } from "element-plus"
|
||||||
import { VNode } from "vue"
|
import { VNode } from "vue"
|
||||||
|
|
||||||
const { push } = useRouter()
|
const { push } = useRouter()
|
||||||
@@ -334,36 +319,36 @@ const getSummaries = (param: SummaryMethodProps) => {
|
|||||||
}
|
}
|
||||||
if (column.property === "paymentInformation") {
|
if (column.property === "paymentInformation") {
|
||||||
const priceVNode: VNode[] & string[] = []
|
const priceVNode: VNode[] & string[] = []
|
||||||
;[
|
;[
|
||||||
{ column: "totalPrice", columnName: "商品总价", color: "#67C260" },
|
{ column: "totalPrice", columnName: "商品总价", color: "#67C260" },
|
||||||
{ column: "extraPrice", columnName: "额外支付", color: "#F56E9B" },
|
{ column: "extraPrice", columnName: "额外支付", color: "#F56E9B" },
|
||||||
{ column: "payPrice", columnName: "实际支付", color: "#355CF6" },
|
{ column: "payPrice", columnName: "实际支付", color: "#355CF6" },
|
||||||
].forEach(({ column, columnName, color }: any, index: number) => {
|
].forEach(({ column, columnName, color }: any, index: number) => {
|
||||||
const values = data.map((item) => Number(item[column]))
|
const values = data.map((item) => Number(item[column]))
|
||||||
if (!values.every((value) => Number.isNaN(value))) {
|
if (!values.every((value) => Number.isNaN(value))) {
|
||||||
priceVNode.push(
|
priceVNode.push(
|
||||||
h("div", {}, [
|
h("div", {}, [
|
||||||
h("span", { style: { marginRight: "40px", minWidth: "60px", fontWeight: "bold" } }, [columnName]),
|
h("span", { style: { marginRight: "40px", minWidth: "60px", fontWeight: "bold" } }, [columnName]),
|
||||||
h("span", { style: { color, minWidth: "50px", flex: 1 } }, [
|
h("span", { style: { color, minWidth: "50px", flex: 1 } }, [
|
||||||
displayPrice(
|
displayPrice(
|
||||||
values.reduce((prev, curr) => {
|
values.reduce((prev, curr) => {
|
||||||
const value = Number(curr)
|
const value = Number(curr)
|
||||||
if (!Number.isNaN(value)) {
|
if (!Number.isNaN(value)) {
|
||||||
return prev + curr
|
return prev + curr
|
||||||
} else {
|
} else {
|
||||||
return prev
|
return prev
|
||||||
}
|
}
|
||||||
}, 0),
|
}, 0),
|
||||||
"元",
|
"元",
|
||||||
2,
|
2,
|
||||||
),
|
),
|
||||||
|
]),
|
||||||
]),
|
]),
|
||||||
]),
|
)
|
||||||
)
|
} else {
|
||||||
} else {
|
priceVNode.push("NaN")
|
||||||
priceVNode.push("NaN")
|
}
|
||||||
}
|
})
|
||||||
})
|
|
||||||
sums[index] = h("div", { style: {} }, [...priceVNode])
|
sums[index] = h("div", { style: {} }, [...priceVNode])
|
||||||
} else {
|
} else {
|
||||||
sums[index] = ""
|
sums[index] = ""
|
||||||
|
|||||||
Reference in new issue
Block a user