Browse Source

fix: 查询性能优化

main
buaixuexideshitongxue 2 weeks ago
parent
commit
63ae2b84a0
  1. 2
      src/components/file/upload.vue
  2. 47
      src/views/entryWindow/index.vue
  3. 19
      src/views/report/edit/controlPrice.vue

2
src/components/file/upload.vue

@ -191,6 +191,8 @@ function handleSuccess(data, file) {
filterFiles[0].percent = 100; filterFiles[0].percent = 100;
filterFiles[0].fileName = data.data.fileName; filterFiles[0].fileName = data.data.fileName;
filterFiles[0].filePath = data.data.filePath; filterFiles[0].filePath = data.data.filePath;
filterFiles[0].uploadUser = data.data.uploadUser;
filterFiles[0].uploadTime = data.data.uploadTime;
window.setTimeout(() => { window.setTimeout(() => {
filterFiles[0].loading = false; filterFiles[0].loading = false;
emit("update:files", files.value); emit("update:files", files.value);

47
src/views/entryWindow/index.vue

@ -7,6 +7,7 @@ import useUserStore from "@/stores/modules/user";
import {FlowNodeEnum} from "@/enums/flowEnums"; import {FlowNodeEnum} from "@/enums/flowEnums";
import feedback from "@/utils/feedback"; import feedback from "@/utils/feedback";
import {getEntryWindowRecord} from '@/api/report/flow'; import {getEntryWindowRecord} from '@/api/report/flow';
import {getWorkList} from '@/api/work/index';
const catchStore = useCatchStore(); const catchStore = useCatchStore();
const userStore = useUserStore(); const userStore = useUserStore();
const uid = userStore.user.userName; const uid = userStore.user.userName;
@ -15,6 +16,7 @@ const tableData = ref([])
const ressDialog =ref(false) const ressDialog =ref(false)
const activeTab = ref('all') const activeTab = ref('all')
const exportLoading = ref(false) const exportLoading = ref(false)
const pendingWorkMap = ref(new Map())
const stageNodeMap = { const stageNodeMap = {
pending: ['review'], pending: ['review'],
auditing: ['first', 'second', 'third', 'Lead'], auditing: ['first', 'second', 'third', 'Lead'],
@ -110,7 +112,7 @@ const handleClick =(tab)=>{
const tabName = tab.props.name; const tabName = tab.props.name;
activeTab.value = tabName; activeTab.value = tabName;
query.value.current = 1; query.value.current = 1;
query.value.code = tabName === 'recessed' ? '1' : 'all'; query.value.code = tabName === 'all' ? 'all' : tabName === 'recessed' ? '1' : '0';
syncNodeListByTab() syncNodeListByTab()
getList() getList()
} }
@ -136,9 +138,15 @@ const inputGetList = (val) => {
//查询数据 //查询数据
const getList =async ()=>{ const getList =async ()=>{
loading.value=true loading.value=true
const res = await reportPage(query.value) const [res, pendingWorks] = await Promise.all([
reportPage(query.value),
getWorkList('first')
])
tableData.value=res.records tableData.value=res.records
total.value=res.total total.value=res.total
pendingWorkMap.value = new Map(
pendingWorks.map(item => [item.reportId, item])
)
loading.value=false loading.value=false
} }
@ -164,6 +172,39 @@ getList()
//查看详情 //查看详情
const router = useRouter(); const router = useRouter();
const handleWork = (row) => {
const work = pendingWorkMap.value.get(row.id)
if (!work) return
if (work.isWarning) {
router.push({
path: '/warning/business',
query: {
reportId: work.reportId,
flowId: work.flowId,
isAudit: true,
isLeader: true
}
})
return
}
const workQuery = {
isEnd: work.reportType === '结算项目',
id: work.reportId,
backPath: '/entryWindow'
}
if (work.flowCode === 'initial') {
workQuery.node = work.flowCode
} else {
workQuery.isAudit = true
}
router.push({
path: '/report/edit/controlPrice',
query: workQuery
})
}
const getDetail =(row,code)=>{ const getDetail =(row,code)=>{
debugger debugger
//判断是否为报审人 //判断是否为报审人
@ -564,8 +605,8 @@ const isAdminShow = ()=>{
<!-- 未删除:显示正常操作 --> <!-- 未删除:显示正常操作 -->
<template v-else> <template v-else>
<el-button link type="primary" v-if="pendingWorkMap.has(row.id)" @click="handleWork(row)">办理</el-button>
<el-button link type="primary" v-if="row.applicantId === uid && row.isRecessed == 1" @click="getDetail(row,'edit')">编辑</el-button> <el-button link type="primary" v-if="row.applicantId === uid && row.isRecessed == 1" @click="getDetail(row,'edit')">编辑</el-button>
<!-- <el-button link type="primary" v-else-if="row.flowUserId === uid" @click="getDetail(row,'audit')">审批</el-button>-->
<el-button link type="primary" v-else @click="getDetail(row)">详情</el-button> <el-button link type="primary" v-else @click="getDetail(row)">详情</el-button>
<el-button link type="danger" v-if="isAdminShow() && row.isRecessed == 0 && row.isSelfData === '1'" @click="recessedShowFun(row,0)"> 退窗</el-button> <el-button link type="danger" v-if="isAdminShow() && row.isRecessed == 0 && row.isSelfData === '1'" @click="recessedShowFun(row,0)"> 退窗</el-button>
<el-button link type="primary" v-if="(isAdminShow() || row.applicantId === uid) && row.isRecessed == 1" @click="recessedShowFun(row,1)">重新进窗</el-button> <el-button link type="primary" v-if="(isAdminShow() || row.applicantId === uid) && row.isRecessed == 1" @click="recessedShowFun(row,1)">重新进窗</el-button>

19
src/views/report/edit/controlPrice.vue

@ -281,7 +281,7 @@ const delFileData = async (row,index) => {
const rulesData = ref({ const rulesData = ref({
reportType: [{required: true, message: '请选择报审类型', trigger: 'blur'}], reportType: [{required: true, message: '请选择报审类型', trigger: 'blur'}],
reportName: [{required: true, message: '请输入项目名称', trigger: 'blur'}], reportName: [{required: true, message: '请输入项目名称', trigger: 'blur'}],
projectType: [{required: true, message: '请选择项目类别', trigger: 'blur'}], projectType: [{required: true, message: '请选择项目类别', trigger: 'change'}],
auditUnitId: [{required: true, message: '请选择审计单位', trigger: 'blur'}], auditUnitId: [{required: true, message: '请选择审计单位', trigger: 'blur'}],
projectUnitId: [{required: true, message: '请选择项目单位', trigger: 'blur'}], projectUnitId: [{required: true, message: '请选择项目单位', trigger: 'blur'}],
projectPrincipal: [{required: true, message: '请选择报审类型', trigger: 'blur'}], projectPrincipal: [{required: true, message: '请选择报审类型', trigger: 'blur'}],
@ -471,17 +471,12 @@ const handleClick = (tab, event) => {
//关闭 //关闭
const closeFun = () => { const closeFun = () => {
if(route.query.disabledVal){ useTabsStore().removeTab('/report/edit/controlPrice', router);
useTabsStore().removeTab('/entryWindow', router); if (route.query.backPath) {
router.push({path:route.query.backPath}) router.push({path: route.query.backPath})
} return
if (route.query.node) {
useTabsStore().removeTab('/report/edit/controlPrice', router);
router.push({path:route.query.backPath})
} else {
useTabsStore().removeTab('/report/edit/controlPrice', router);
router.push({path:"/work", query:{"load": true}})
} }
router.push({path:"/work", query:{"load": true}})
} }
//入窗审批界面关闭 //入窗审批界面关闭
@ -940,7 +935,7 @@ function hasAuditAttachment() {
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="项目类别"> <el-form-item label="项目类别" prop="projectType">
<el-select :disabled="isDisabled" v-model="formData.project.projectType"> <el-select :disabled="isDisabled" v-model="formData.project.projectType">
<el-option value="服务类" label="服务类"></el-option> <el-option value="服务类" label="服务类"></el-option>
<el-option value="工程类" label="工程类"></el-option> <el-option value="工程类" label="工程类"></el-option>

Loading…
Cancel
Save