This commit is contained in:
LiJianZhao 2025-05-15 14:53:52 +08:00
parent 3ea97ef532
commit fe8d7fda28
7 changed files with 144 additions and 81 deletions

View File

@ -60,6 +60,9 @@ let change_search = () => {
init()
}
const formatDate = (isoStr:any) => {
if (!isoStr){
return ''
}
const date = new Date(isoStr);
return `${date.getFullYear()}-${(date.getMonth()+1).toString().padStart(2,'0')}-${date.getDate().toString().padStart(2,'0')}`;
}
@ -79,12 +82,23 @@ const formatDate = (isoStr:any) => {
</div>
<div class="content">
<el-table :data="tableData" style="width: 100%;height: 100%">
<el-table-column prop="code" label="库存初始化编码" show-overflow-tooltip/>
<el-table-column prop="wholeNumber" label="初始化商品整量数量"/>
<el-table-column prop="name" label="商品名称" />
<el-table-column prop="code" label="库存初始化编码" />
<el-table-column prop="wholeNumber" label="初始化商品整量数量">
<template #default="scope">
{{scope.row.wholeNumber}}{{scope.row.packagingUnit}}
</template>
</el-table-column>
<el-table-column prop="fragmentNumber" label="初始化商品分量数量">
<template #default="scope">
{{scope.row.fragmentNumber}}{{scope.row.minPackagingUnit}}
</template>
</el-table-column>
<el-table-column prop="createDate" label="初始化日期"/>
<el-table-column prop="uploadStatus" label="状态">
<template #default="{row}">
{{ row.uploadStatus == 0 ? '未上传' : row.uploadStatus == 1 ? '已上传' : '异常' }}
{{ row.uploadStatus == 0 ? '未上传' : row.uploadStatus == 1 ? '已上传' :row.uploadStatus == 2 ? '异常':"无需上报" }}
</template>
</el-table-column>
<el-table-column prop="uploadMessage" label="上传状态信息" show-overflow-tooltip/>
@ -93,7 +107,7 @@ const formatDate = (isoStr:any) => {
{{ formatDate(row.uploadDatetime) }}
</template>
</el-table-column>
<el-table-column prop="fragmentNumber" label="初始化商品分量数量"/>
</el-table>
</div>
<div class="bottom">

View File

@ -2,18 +2,18 @@
<div class="container">
<div class="tip">
<el-select
v-model="searchInfo.type"
v-model="searchInfo.socialType"
placeholder="变更类型"
clearable style="width: 240px;" @clear="init()">
<el-option
v-for="(item,key) in typeMapping"
v-for="(item,key) in socialTypeMapping"
:key="key"
:label="item"
:value="key"
/>
</el-select>
<el-select
v-model="searchStatus.type"
v-model="searchStatus.uploadStatus"
placeholder="上传状态"
clearable style="width: 240px;margin: 0 10px" @clear="init()">
<el-option
@ -34,11 +34,18 @@
</div>
<div class="content">
<el-table :data="tableData" style="width: 100%;height: 100%">
<el-table-column prop="name" label="商品名称"/>
<el-table-column prop="type" label="库存变更类型" show-overflow-tooltip>
<template #default="{row}">
{{ typeMapping[row.type] }}
</template>
</el-table-column>
<el-table-column prop="socialType" label="医保库存变更类型" show-overflow-tooltip>
<template #default="{row}">
{{ socialTypeMapping[row.socialType] }}
</template>
</el-table-column>
<el-table-column prop="beforeFragmentNumber" label="前库存" show-overflow-tooltip>
<template #default="{row}">
{{ row.beforeWholeNumber }}{{ row.packagingUnit }}
@ -114,11 +121,11 @@ const tableData = ref([])
let type = ref<number>()
let typeName = ref('')
const searchInfo = ref({
type: '',
socialType: '',
keyword: '',
})
const searchStatus = ref({
type: '',
const searchStatus = ref<any>({
socialType: '',
keyword: '',
})
const value1 = ref([])
@ -133,7 +140,7 @@ interface TypeMapping {
[key: number]: string;
}
const typeMapping: TypeMapping = {
const socialTypeMapping: TypeMapping = {
101: '调拨入库',
102: '调拨出库',
103: '盘盈',
@ -143,6 +150,17 @@ const typeMapping: TypeMapping = {
107: '其他出库',
108: '初始化入库'
}
const typeMapping: TypeMapping = {
1: "初始化",
2: "采购入库",
3: "盘盈入库",
4: "发药出库",
5: "领用出库",
6: "报损出库",
7: "盘亏出库",
8: "退货出库",
9: "零售退款入库"
}
interface UploadStatus {
[key: number]: string;
@ -152,6 +170,7 @@ const uploadStatus: UploadStatus = {
0: '未上传',
1: '已上传',
2: '异常',
3: "无需上报",
}
onMounted(() => {
@ -162,10 +181,10 @@ let init = () => {
const query = {
page: 1,
pageSize: 20,
type: Number(searchInfo.value.type) || "",
uploadStatus: searchStatus.value.type || "",
createTimeBefore: value1.value[0] ? formatDate(value1.value[0]) : "",
createTimeAfter: value1.value[1] ? formatDate(value1.value[1]) : "",
socialType: Number(searchInfo.value.socialType) || null,
uploadStatus: searchStatus.value.uploadStatus || null,
createTimeBefore: value1.value ? formatDate(value1.value[0]) : null,
createTimeAfter: value1.value ? formatDate(value1.value[1]) : null,
}
post("social/upload/get3502List", {query: query}).then((res: any) => {
tableData.value = res.list
@ -189,7 +208,9 @@ let change_search = () => {
}
// YYYY-MM-DD
const formatDate = (isoStr: any) => {
console.log(isoStr, "isoStr")
if (!isoStr) {
return ''
}
const date = new Date(isoStr);
return `${date.getFullYear()}-${(date.getMonth() + 1).toString().padStart(2, '0')}-${date.getDate().toString().padStart(2, '0')}`;
}
@ -198,10 +219,12 @@ const formatDate = (isoStr: any) => {
<style scoped lang="scss">
@use "@/assets/scss/base.scss";
.container {
display: flex;
flex-direction: column;
height: 100%;
.top {
height: 60px;
@ -209,6 +232,7 @@ const formatDate = (isoStr: any) => {
width: 300px;
}
}
.content {
flex: 1;
min-height: 0;

View File

@ -2,18 +2,18 @@
<div class="container">
<div class="tip">
<el-select
v-model="searchInfo.type"
v-model="searchInfo.socialType"
placeholder="变更类型"
clearable style="width: 240px;" @clear="init()">
<el-option
v-for="(item,key) in typeMapping"
v-for="(item,key) in socialTypeMapping"
:key="key"
:label="item"
:value="key"
/>
</el-select>
<el-select
v-model="searchStatus.type"
v-model="searchStatus.uploadStatus"
placeholder="上传状态"
clearable style="width: 240px;margin: 0 10px" @clear="init()">
<el-option
@ -23,32 +23,28 @@
:value="key"
/>
</el-select>
<el-select
v-model="in_out_obj.type"
placeholder="进货,退货"
clearable style="width: 240px;margin: 0 10px" @clear="init()">
<el-option
v-for="(item,key) in in_out"
:key="key"
:label="item"
:value="key"
/>
</el-select>
<el-button type="primary" style="margin-left: 10px" @click="change_search">搜索</el-button>
</div>
<div class="content">
<el-table :data="tableData" style="width: 100%;height: 100%">
<el-table-column prop="name" label="商品名称"/>
<el-table-column prop="number" label="进货,退货数量" show-overflow-tooltip>
<template #default="{row}">
<el-icon v-if="row.number<0" style="font-size: 9px"><Minus /></el-icon>
<el-icon v-if="row.number>0" style="font-size: 9px"><Plus /></el-icon>
<span>
<template v-if="row.number!=0">
{{Math.abs(row.number)}}
{{Math.abs(row.number)}}{{row.packagingUnit}}
</template>
</span>
</template>
</el-table-column>
<el-table-column prop="socialType" label="医保库存变更类型" show-overflow-tooltip>
<template #default="{row}">
{{ socialTypeMapping[row.socialType] }}
</template>
</el-table-column>
<el-table-column prop="uploadStatus" label="状态">
<template #default="{row}">
{{ uploadStatus[row.uploadStatus as keyof typeof uploadStatus] }}
@ -60,11 +56,6 @@
{{ formatDate(row.uploadDatetime) }}
</template>
</el-table-column>
<el-table-column prop="type" label="库存变更类型">
<template #default="{row}">
{{ typeMapping[row.type as keyof typeof typeMapping] }}
</template>
</el-table-column>
</el-table>
</div>
<div class="bottom">
@ -89,20 +80,15 @@ import {Minus, Plus} from "@element-plus/icons-vue";
const tableData = ref([])
//
const searchInfo=ref({
type:'',
keyword: '',
const searchInfo=ref<any>({
})
const searchStatus=ref({
type:'',
keyword: '',
})
const in_out_obj=ref({
type:'',
keyword: '',
const searchStatus=ref<any>({
})
interface TypeMapping {
[key: number]: string;
}
// type typeName
const typeMapping = {
const socialTypeMapping: TypeMapping = {
101: '调拨入库',
102: '调拨出库',
103: '盘盈',
@ -116,10 +102,7 @@ const uploadStatus = {
0: '未上传',
1: '已上传',
2: '异常',
}
const in_out = {
106: '进货',
107: '退货',
3: '无需上报',
}
//
@ -133,8 +116,8 @@ let init = ()=>{
const query = {
page: 1,
pageSize: 20,
type:searchInfo.value.type||in_out_obj.value.type||'',
uploadStatus:searchStatus.value.type||'',
socialType:searchInfo.value.socialType||null,
uploadStatus:searchStatus.value.uploadStatus ||null,
}
post("social/upload/get3503List",{query: query}).then((res:any)=>{
tableData.value = res.list
@ -156,7 +139,9 @@ let change_search=()=>{
}
// YYYY-MM-DD
const formatDate = (isoStr:any) => {
console.log(isoStr,"isoStr")
if (!isoStr){
return "";
}
const date = new Date(isoStr);
return `${date.getFullYear()}-${(date.getMonth()+1).toString().padStart(2,'0')}-${date.getDate().toString().padStart(2,'0')}`;
}

View File

@ -31,6 +31,7 @@ let changePage = (value: number) => {
const query = {
pageNum: value,
pageSize: pageSize.value,
code: code.value
}
post("social/upload/get3505List",{query: query}).then((res:any)=>{
tableData.value = res.list
@ -40,6 +41,14 @@ let changePage = (value: number) => {
let change_search = ()=>{
init()
}
// YYYY-MM-DD
const formatDate = (isoStr:any) => {
if (!isoStr){
return "";
}
const date = new Date(isoStr);
return `${date.getFullYear()}-${(date.getMonth()+1).toString().padStart(2,'0')}-${date.getDate().toString().padStart(2,'0')}`;
}
</script>
<template>
@ -50,23 +59,17 @@ let change_search = ()=>{
style="width: 240px"
placeholder="请输入库存初始化编码"
:suffix-icon="Search"
size="large" clearable
clearable
@change="change_search"/>
<el-button type="primary" style="margin-left: 10px" @click="change_search">搜索</el-button>
</div>
<div class="content">
<el-table :data="tableData" style="width: 100%;height: 100%">
<el-table-column prop="retailOrderCode" label="订单号" show-overflow-tooltip/>
<el-table-column prop="goodsName" label="商品名称"/>
<el-table-column prop="chargeOrderCode" label="订单号" show-overflow-tooltip/>
<el-table-column prop="number" label="变化量">
<template #default="{row}">
{{row.type ==1 ? "+"+row.number : "-"+row.number }}{{row.unit}}
</template>
</el-table-column>
<el-table-column prop="feedetlSn" label="详情流水号"/>
<el-table-column prop="createTime" label="初始化日期"/>
<el-table-column prop="uploadStatus" label="状态">
<template #default="{row}">
{{row.uploadStatus ==0 ? '未上传' :row.uploadStatus ==1 ? '已上传': '异常' }}
{{row.type ==1 ? row.number : "+"+row.number }}{{row.unit}}
</template>
</el-table-column>
<el-table-column prop="uploadMessage" label="变更类型" show-overflow-tooltip>
@ -74,6 +77,18 @@ let change_search = ()=>{
{{row.type ==1 ? '销售' :row.type ==2 ? '退货': '异常' }}
</template>
</el-table-column>
<el-table-column prop="feedetlSn" label="详情流水号" width="250"/>
<el-table-column prop="createTime" label="初始化日期">
<template #default="{row}">
{{formatDate(row.createTime)}}
</template>
</el-table-column>
<el-table-column prop="uploadStatus" label="状态">
<template #default="{row}">
{{row.uploadStatus ==0 ? '未上传' :row.uploadStatus ==1 ? '已上传':row.uploadStatus ==2 ? '无需上报':"异常"}}
</template>
</el-table-column>
<el-table-column prop="uploadDatetime" label="最近上传时间"/>
</el-table>

View File

@ -76,16 +76,16 @@
}
).then(() => {
//
alert("提交冲正,代码注释了,防止在正式库冲正")
// post("social/reconciliation/reversal", {data: formData.value}).then((res: any) => {
// ElMessage({
// message: "",
// type: 'success',
// plain: true
// })
// formRef.value?.resetFields();
// close()
// });
// alert("")
post("social/reconciliation/reversal", {data: formData.value}).then((res: any) => {
ElMessage({
message: "冲正成功",
type: 'success',
plain: true
})
formRef.value?.resetFields();
close()
});
});
})

View File

@ -21,8 +21,12 @@
<el-table-column label="结算笔数" prop="settlementCount"></el-table-column>
<el-table-column label="对账结果" prop="reconciliationResult">
<template #default="scope">
<el-tag v-if="scope.row.reconciliationResult == null" type="success">未对账</el-tag>
<el-tag v-else type="info">{{ scope.row.reconciliationResult }}</el-tag>
<el-tag v-if="scope.row.reconciliationResult == null" type="info">未对账</el-tag>
<el-tag v-if="scope.row.reconciliationResult == 1" type="success">{{ reconciliationResult[1] }}</el-tag>
<el-tag v-if="scope.row.reconciliationResult != null&&scope.row.reconciliationResult != 1" type="danger">{{
reconciliationResult[scope.row.reconciliationResult as keyof typeof reconciliationResult] || '未知状态'
}}
</el-tag>
</template>
</el-table-column>
<el-table-column label="操作">
@ -41,6 +45,8 @@ import {onMounted, ref} from "vue";
import {formatDateArray, getThisMonth, getToday} from "@/utils/dateUtils.ts";
import {post} from "@/utils/request.ts";
import DetailList from "@/components/social/reconciliation/DetailList.vue";
import {ElMessage} from "element-plus";
import {reconciliationResult} from "../../assets/config/constants.ts";
const selectDate = ref<any>();
const changeDate = (dates: Date[]) => {
@ -48,6 +54,18 @@ const changeDate = (dates: Date[]) => {
console.log(selectDate.value);
getList()
};
interface TypeMapping {
[key: number]: string;
}
const accountRecordResult: TypeMapping = {
0: "平",
1: "不平",
101: "中心多",
102: "医药机构多",
103: "数据不一致",
};
const list = ref<any>();
const getList = () => {
post("social/reconciliation/getList", {beginTime: selectDate.value[0], endTime: selectDate.value[1]}).then(
@ -61,7 +79,10 @@ const accountRecordDo = (row: any) => {
let data = {...row};
data.beginTime = selectDate.value[0];
data.endTime = selectDate.value[1];
post("social/reconciliation/totalDo", {data: data})
post("social/reconciliation/totalDo", {data: data}).then((res: any) => {
ElMessage.success(res.stmtinfo.stmt_rslt_dscr);
row.reconciliationResult = res.stmtinfo.stmt_rslt
})
}
const detailsDo = (row: any) => {

View File

@ -15,14 +15,18 @@
<el-table :data="tableData" border style="width: 100%">
<el-table-column prop="chargeTime" label="结算时间" width="180"></el-table-column>
<el-table-column prop="customer" label="患者" width="180"></el-table-column>
<el-table-column prop="projectCode" label="订单号" width="180"></el-table-column>
<el-table-column prop="projectCode" label="订单号" width="240"></el-table-column>
<el-table-column prop="source" label="结算类型" width="180">
<template #default="scope">
<el-tag v-if="scope.row.source == 0" type="success">零售</el-tag>
<el-tag v-else>{{scope.row.source}}</el-tag>
</template>
</el-table-column>
<el-table-column prop="netReceipts" label="结算金额" width="180"></el-table-column>
<el-table-column prop="netReceipts" label="结算金额" width="180">
<template #default="scope">
{{scope.row.netReceipts}}
</template>
</el-table-column>
<el-table-column prop="dockerName" label="医生" width="180"></el-table-column>
<el-table-column prop="salePersonName" label="收费员" width="180"></el-table-column>
<el-table-column prop="type" label="交易类型" width="180">
@ -39,7 +43,7 @@
<script setup lang="ts">
import {onMounted, ref} from "vue";
import {post} from "@/utils/request.ts";
import {getToday, formatDateArray} from "@/utils/dateUtils.ts";
import {getToday, formatDateArray, getThisMonth} from "@/utils/dateUtils.ts";
import {apiConfig} from "@/assets/config/apiConfig.ts";
const tableData = ref([])
@ -56,7 +60,7 @@ const getTableData = () => {
})
}
onMounted(() => {
const today = getToday()
const today = getThisMonth()
date.value = [today.start, today.end]
getTableData()
})