parent
acc80cbc03
commit
63c2fa9b12
@ -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 |
@ -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>
|
||||
|
Loading…
Reference in New Issue