1、单据上传统计界面开发

2、单据上传设置在呢个价论述时间定时设置 取消起始上传时间更新逻辑 无限循环处理有问题的单据
20240912_adapter
qiuyt 5 months ago
parent acc80cbc03
commit 63c2fa9b12

@ -287,5 +287,11 @@ export function confirmFinish(query) {
});
}
export function uploadCount(query) {
return axios({
url: "/udiwms/basic/collect/orderFinish/uploadCount",
method: "post",
data: query
});
}

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1731934302843" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3284" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M753.3568 731.648C766.702931 744.994131 766.702931 766.600531 753.3568 779.912531 740.010669 793.258669 718.404269 793.258669 705.092269 779.912531L513.365333 588.1856 326.485333 775.0656C313.1392 788.411731 291.5328 788.411731 278.2208 775.0656 264.874667 761.7536 264.874667 740.113069 278.2208 726.801069L465.1008 539.921067 270.6432 345.463467C257.297067 332.151467 257.297067 310.545067 270.6432 297.198933 283.9552 283.886933 305.5616 283.886933 318.907733 297.198933L513.365333 491.656533 712.669869 292.352C725.981869 279.005867 747.588269 279.005867 760.9344 292.352 774.2464 305.698133 774.2464 327.304533 760.9344 340.616533L561.629867 539.921067 753.3568 731.648ZM512 0C229.239467 0 0 229.239467 0 512 0 794.760531 229.239467 1024 512 1024 794.760531 1024 1024 794.760531 1024 512 1024 229.239467 794.760531 0 512 0L512 0Z" fill="#D3201B" p-id="3285"></path></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1731934265893" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4564" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M512 0a512 512 0 1 1 0 1024A512 512 0 0 1 512 0z m201.728 295.480889a48.014222 48.014222 0 0 0-66.218667 14.791111l-191.886222 301.511111-85.674667-85.731555A47.957333 47.957333 0 1 0 302.08 593.92l128 128a47.900444 47.900444 0 0 0 74.410667-8.192l224.028444-351.971556a47.957333 47.957333 0 0 0-14.791111-66.275555z" fill="#6CCA2F" p-id="4565"></path></svg>

After

Width:  |  Height:  |  Size: 691 B

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1731934559434" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1785" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M938.666667 0a85.333333 85.333333 0 0 1 85.333333 85.333333v853.333334a85.333333 85.333333 0 0 1-85.333333 85.333333H85.333333a85.333333 85.333333 0 0 1-85.333333-85.333333V85.333333a85.333333 85.333333 0 0 1 85.333333-85.333333h853.333334z m-307.2 256H324.266667c-14.165333 0-25.6 11.349333-25.6 25.386667v461.226666a25.6 25.6 0 0 0 25.429333 25.386667h409.941333a25.6 25.6 0 0 0 25.429334-25.813333V384l-128-128z m-25.6 51.2v102.4h102.4v307.2H349.866667V307.2h256z m-76.8 102.4L426.666667 512h76.8v102.4H554.666667V512h76.8l-102.4-102.4z" fill="#00A9FE" p-id="1786"></path></svg>

After

Width:  |  Height:  |  Size: 914 B

@ -4,7 +4,7 @@
<el-form :model="formData" :rules="formRules" label-width="160px" ref="dataForm">
<el-button-group style="display: flex;margin: 0px 0 10px 90%; ">
<el-button type="primary" @click.native="saveTest()">测试货架组件</el-button>
<!-- <el-button type="primary" @click.native="saveTest()">测试货架组件</el-button>-->
<el-button type="primary" @click.native="save()">保存</el-button>
</el-button-group>
@ -104,6 +104,15 @@
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8" class="el-col">
<el-form-item label="设置轮询时间(小时):" prop="startUploadHour" label-width="160px">
<el-input-number v-model="formData.startUploadHour"
:min="1" :max="24" label="描述文字">
</el-input-number>
</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item name="3">
@ -154,6 +163,7 @@ export default {
name: 'timerSetting',
data() {
return {
num: 1,
ShelfDisplayFlag: false,
shelfData:[
{

@ -0,0 +1,533 @@
<template>
<div class="app-container home">
<div>
<!-- <h2>单据上传统计</h2>-->
<!-- <el-divider/>-->
<el-card>
<el-form v-if="queryList && queryList.length > 0" :model="filterQuery" class="query-form"
size="mini" label-width="100px"
>
<el-row style=" display:flex; flex-wrap: wrap; ">
<template v-for="(item, index) in queryList">
<div v-if="showSearch || item.isImport">
<el-form-item v-if="item.columnType == 'input' && executeEval(row,item.expression,true)"
class="query-form-item"
:label="item.columnDesc+`:`" :key="item.id"
>
<el-input
v-model="filterQuery[item.columnName]"
:placeholder="item.columnDesc == '模糊查询' ? '单据号/来源系统/收货方/发货方' : item.columnDesc"
:disabled="executeEval(null,item.disabledFuc,false)"
@keyup.enter.native="executeFuc($event,'5',item.clickFuc)"
clearable
></el-input>
</el-form-item>
<el-form-item v-if="item.columnType == 'select' && executeEval(row,item.expression,true)"
class="query-form-item"
:label="item.columnDesc+`:`"
>
<el-select v-model="filterQuery[item.columnName]"
:placeholder="item.columnDesc"
:disabled="executeEval(null,item.disabledFuc,false)"
clearable
>
<el-option
v-for="dict in item.lableRuleObj"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item v-if="item.columnType == 'selectServer' && executeEval(row,item.expression,true)"
class="query-form-item"
:label="item.columnDesc+`:`"
>
<el-select
v-model="filterQuery[item.columnName]"
:placeholder="item.columnDesc"
@change="executeFuc($event,'5',item.checkRules)"
:disabled="executeEval(null,item.disabledFuc,false)"
filterable
remote
:remote-method="(query) => executeFuc(query,'5',item.clickFuc)"
clearable
>
<el-option
v-for="item in options[item.clickFuc]"
:key="item.code"
:label="item.label"
:value="item.code"
/>
</el-select>
</el-form-item>
<el-form-item v-if="item.columnType == 'datePicker' && executeEval(row,item.expression,true)"
class="query-form-item"
:label="item.columnDesc+`:`"
>
<el-date-picker
:picker-options="pickerOptions"
v-model="actDateRange"
type="daterange"
format="yyyy 年 MM 月 dd 日"
value-format="yyyy-MM-dd"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</el-form-item>
<el-form-item v-if="item.columnType == 'date' && executeEval(row,item.expression,true)"
class="query-form-item"
:label="item.columnDesc+`:`"
>
<el-date-picker
v-model="filterQuery[item.columnName]"
:style="`width:${item.width+'px'}`"
value-format="yyyy-MM-dd"
:disabled="executeEval(null,item.disabledFuc,false)"
type="date"
:placeholder="item.columnDesc"
></el-date-picker>
</el-form-item>
</div>
</template>
</el-row>
</el-form>
<div class="top-right-btn">
<el-button-group>
<el-button
type="primary"
icon="el-icon-refresh"
@click="onReset"
>重置
</el-button>
<el-button type="primary" icon="el-icon-search" @click="onSubmit(this)"
>查询
</el-button
>
</el-button-group>
</div>
</el-card>
</div>
<!-- 分割线 -->
<!-- <div class="m0 grid-container grid-container1" style="height: 100%; display: flex; flex-wrap: wrap;">-->
<!-- <el-card-->
<!-- @click.native="handleClick(index)"-->
<!-- v-for="(card, index) in stationList"-->
<!-- :key="index"-->
<!-- class="grid-itemCard"-->
<!-- :body-style="{ padding: '0px', height: '100px', width: '100px', display: 'flex', justifyContent: 'center', alignItems: 'center' }"-->
<!-- >-->
<!-- {{ card.workplaceName }}-->
<!-- </el-card>-->
<!-- </div>-->
<div class="mt10 grid-container grid-container3" style="height: 15%">
<el-card class="grid-item" body-style="padding:0px;height:100%" >
<el-row >
<div class="height-full fl center ml20" style="width: 30%" @click="linkPage('/dept/use/prescribeDir/inout/split/tag/upload?status=2')">
<el-image style="border-radius: 4%;width: 90%;height: 90%"
:src="alreadyUploadingSvg"
>
<div slot="placeholder" class="image-slot">
加载中<span class="dot">...</span>
</div>
</el-image>
</div>
<div class="height-full fr center mr20" @click="linkPage('/dept/use/prescribeDir/inout/split/tag/upload?status=2')">
<span class="header d-block">
已上传单据
</span>
<span class="d-block mt10" :style="{'font-size': '32px','font-weight': 'bolder',color:'#394047'}">
{{ alreadyUploadingCount }}
</span>
</div>
</el-row>
</el-card>
<el-card class="grid-item" body-style="padding:0px;height:100%">
<el-row>
<div class="height-full fl center ml20" style="width: 30%" @click="linkPage('/dept/use/prescribeDir/inout/split/tag/upload?status=1')">
<el-image style="border-radius: 4%;width: 90%;height: 90%"
:src="notUploadingSvg"
>
<div slot="placeholder" class="image-slot">
加载中<span class="dot">...</span>
</div>
</el-image>
</div>
<div class="height-full fr center mr20" @click="linkPage('/dept/use/prescribeDir/inout/split/tag/upload?status=1')">
<span class="header d-block">
未上传单据
</span>
<span class="d-block mt10" :style="{'font-size': '32px','font-weight': 'bolder',color:'#394047'}">
{{ notUploadingCount }}
</span>
</div>
</el-row>
</el-card>
<el-card class="grid-item" body-style="padding:0px;height:100%">
<el-row>
<div class="height-full fl center ml20" style="width: 30%" @click="linkPage('/dept/use/prescribeDir/inout/split/tag/upload?status=3')">
<el-image style="border-radius: 4%;width: 90%;height: 90%"
:src="uploadingFailSvg"
>
<div slot="placeholder" class="image-slot">
加载中<span class="dot">...</span>
</div>
</el-image>
</div>
<div class="height-full fr center mr20" @click="linkPage('/dept/use/prescribeDir/inout/split/tag/upload?status=3')">
<span class="header d-block">
上传失败单据
</span>
<span class="d-block mt10" :style="{'font-size': '32px','font-weight': 'bolder',color:'#394047'}">
{{ uploadingFailCount }}
</span>
</div>
</el-row>
</el-card>
</div>
</div>
</template>
<script>
import alreadyUploadingSvg from '@/assets/svg/已上传.svg'
import notUploadingSvg from '@/assets/svg/未上传.svg'
import uploadingFailSvg from '@/assets/svg/上传失败.svg'
import { executeFuc, getHead } from '@/utils/customConfig'
import { convertDate } from '@/utils/date'
import { uploadCount } from '@/api/collect/collectOrder'
// import {getOrderList} from "../api/inout/order";
// import {sysMsgTodoPage} from "../api/system/sysMsgTodoApi";
// import productSvg from "@/assets/svg/.svg"
// import invSvg from "@/assets/svg/.svg"
// import certSvg from "@/assets/svg/.svg"
// import {getInvRemindMsgList} from "../api/system/invRemindMsg";
// import {getUdiInfos} from "../api/basic/udiRelevance";
// // import {listPage} from "@/api/basic/sysWorkplaceManage.js";
// import {getSupCertgetCount, getSupCertRemindMsgList} from "../api/purchase/supCertRedmindMsg";
export default {
name: 'Index',
data() {
return {
alreadyUploadingSvg: alreadyUploadingSvg,
notUploadingSvg: notUploadingSvg,
uploadingFailSvg: uploadingFailSvg,
alreadyUploadingCount: 0,
notUploadingCount: 0,
uploadingFailCount: 0,
// ==================================================
msgLoading: false,
todoCount: 0,
msgList: [],
// =======================================================================
// ==================================================
orderLoading: false,
orderTotal: 0,
orderList: [],
// =======================================================================
//
//
tableHeader: [],
queryList: [],
tableObj: [],
fromList: [],
//
tableHeader1: [],
queryList1: [],
tableObj1: [],
fromList1: [],
convertDateFun: convertDate,
pickerOptions: {
shortcuts: [
{
text: '最近一周',
onClick(picker) {
const end = new Date()
const start = new Date()
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
picker.$emit('pick', [start, end])
}
},
{
text: '最近一个月',
onClick(picker) {
const end = new Date()
const start = new Date()
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
picker.$emit('pick', [start, end])
}
},
{
text: '最近三个月',
onClick(picker) {
const end = new Date()
const start = new Date()
start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
picker.$emit('pick', [start, end])
}
}
]
},
actDateRange: [],
//-------------end
filterQuery: {
startTime:null,
endTime:null
}
}
},
methods: {
//------------
executeFuc(row, type, clickFuc, value) {
return executeFuc(this, row, type, clickFuc, value)
},
executeEval(row, expression, defaultRet) {
if (expression) {
return eval(expression)
}
return defaultRet
},
onReset() {
this.filterQuery = {
startTime:null,
endTime:null
}
this.actDateRange = []
this.getList()
},
onSubmit(_this) {
if (_this == null) {
_this = this
}
_this.getList()
},
getList() {
// this.loading = true
if (this.actDateRange !== null) {
this.filterQuery.startTime = this.actDateRange[0]
this.filterQuery.endTime = this.actDateRange[1]
} else {
this.filterQuery.startTime = null
this.filterQuery.endTime = null
}
uploadCount(this.filterQuery).then(res => {
// console.log('res',res)
if (res.code === 20000) {
// this.loading = false
// this.list = res.data || []
// console.log('res.data',res.data)
this.notUploadingCount = 0
this.alreadyUploadingCount = 0
this.uploadingFailCount = 0
for (let map of res.data) {
if(map.uploadStatus == "1"){
this.notUploadingCount = map.count
}else if(map.uploadStatus == "2"){
this.alreadyUploadingCount = map.count
}else if(map.uploadStatus == "3"){
this.uploadingFailCount = map.count
}
}
}else {
// this.loading = false
this.$message.error(res.message);
}
// this.total = res.data.total || 0
// this.panelALive = false
}).catch(() => {
// this.loading = false
// this.list = []
// this.total = 0
})
},
linkPage(path) {
console.log(path)
this.$router.push(path)
},
},
mounted() {
getHead('collectOrderStats', '1').then((re) => {
//
this.tableObj = re.data
this.tableHeader = re.data.tableList
this.queryList = re.data.queryList
this.fromList = re.data.fromList
this.getList()
})
}
}
</script>
<style scoped lang="scss">
.center {
display: flex;
flex-direction: column;
align-items: flex-start;
justify-content: center;
}
.el-row .el-card {
margin: 0;
.el-card__body {
padding: 0 !important;
}
}
.el-card {
/* margin-right: 15px; */
/* margin-left: 15px; */
margin-top: 15px;
/* transition: all .5s; */
}
.grid-itemCard {
/* 确保卡片是正方形,并且有一定的间距 */
margin: 10px;
background-color: #f9f9f9;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
}
.grid-item {
height: 100%;
padding: 15px;
.el-row, .el-col {
height: 100%;
}
.header {
color: #676a6c;
font-size: 20px;
font-weight: bolder;
}
.el-table {
margin-top: 10px;
width: 100%;
}
}
.grid-container {
height: inherit;
display: grid;
grid-gap: 10px;
.el-card {
margin: 0;
}
}
.grid-container1 {
grid-template-columns: repeat(1, 1fr);
padding: 10px;
}
.grid-container2 {
grid-template-columns: repeat(2, 1fr);
}
.grid-container3 {
grid-template-columns: repeat(3, 1fr);
}
.grid-container4 {
grid-template-columns: repeat(4, 1fr);
}
.home {
blockquote {
padding: 10px 20px;
margin: 0 0 20px;
font-size: 17.5px;
border-left: 5px solid #eee;
}
hr {
margin-top: 20px;
margin-bottom: 20px;
border: 0;
border-top: 1px solid #eee;
}
.col-item {
margin-bottom: 20px;
}
ul {
padding: 0;
margin: 0;
}
height: calc(100%);
font-family: "open sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 13px;
color: #676a6c;
overflow-x: hidden;
ul {
list-style-type: none;
}
h4 {
margin-top: 0px;
}
h2 {
margin-top: 10px;
font-size: 26px;
color: #000610;
font-weight: bolder;
}
p {
margin-top: 10px;
b {
font-weight: 700;
}
}
.update-log {
ol {
display: block;
list-style-type: decimal;
margin-block-start: 1em;
margin-block-end: 1em;
margin-inline-start: 0;
margin-inline-end: 0;
padding-inline-start: 40px;
}
}
}
</style>

@ -63,6 +63,7 @@ export default {
}
},
methods: {
handleTabClick(tab) {
if (tab.name === 'second1') {
if (this.$refs.prescribePanel1) {
@ -82,9 +83,22 @@ export default {
}
},
created() {
console.log('window.location.aaa',this.$route.query.status)
if (this.$route.query.workplaceId != null){
this.workPlaceCode = Number(this.$route.query.workplaceId);
}
if('1' == this.$route.query.status
|| '2' == this.$route.query.status
|| '3' == this.$route.query.status
){
this.activeName = 'second'+this.$route.query.status
}else {
this.activeName = 'second3'
}
}
}

Loading…
Cancel
Save