Merge pull request 'dj' (#835) from dj into master

Reviewed-on: http://git.feashow.cn/clay/mosr-web/pulls/835
This commit is contained in:
2024-10-13 14:48:29 +00:00
4 changed files with 327 additions and 16 deletions

View File

@@ -190,6 +190,24 @@ const router = createRouter({
breadcrumb: false
}
},
{
path: '/todolist',
name: 'Todolist',
component: () => import('@/views/todoList/index.vue'),
meta: {
title: '待办',
breadcrumb: false
}
},
{
path: '/donelist',
name: 'Donelist',
component: () => import('@/views/doneList/index.vue'),
meta: {
title: '已办',
breadcrumb: false
}
},
]
},
{

View File

@@ -0,0 +1,139 @@
<template>
<fvTable ref="tableIns" :tableConfig="tableConfig" style="margin-top: 15px"></fvTable>
</template>
<script setup lang="jsx">
const router = useRouter()
const tableIns = ref()
const tableConfig = reactive({
columns: [
{
prop: 'index',
type: 'index',
label: '序号',
align: 'center',
width:60,
index: index => {
return (tableIns.value.getQuery().pageNum - 1) * tableIns.value.getQuery().pageSize + index + 1
}
},
{
prop: 'targetName',
label: '名称',
align: 'center'
},
{
prop: 'initiatorName',
label: '发起人',
align: 'center'
},
{
prop: 'targetState',
label: '流程类型',
align: 'center',
showOverflowTooltip: false,
currentRender: ({row, index}) => {
if (row.targetState !== null || row.targetState !== undefined) {
return (<Tag dictType={'todo_type'} value={row.targetState}/>)
} else {
return '--'
}
}
},
{
prop: 'submitTime',
label: '提交时间',
align: 'center'
},
{
prop: 'oper',
label: '操作',
align: 'center',
fixed: 'right',
width: 150,
showOverflowTooltip: false,
currentRender: ({row, index}) => {
let btn = []
btn.push({label: '查看', func: () => handleView(row), type: 'primary'})
return (
<div style={{width: '100%'}}>
{
btn.map(item => (
<el-button
type={item.type}
onClick={() => item.func()}
link
>
{item.label}
</el-button>
))
}
</div>
)
}
}
],
api: '/workflow/mosr/process/task/about',
})
const handleView = (row) => {
if (row.targetState == '00' && row.targetId) {
router.push({
name: 'Requirement/detail',
query: {
id: row.targetId,
source: 'home'
}
})
} else if (row.targetState == '10' && row.targetId) {
router.push({
name: 'Summary/detail',
query: {
projectId: row.targetId,
state: row.state,
source: 'home'
}
})
} else if (row.targetState == '20' || row.targetState == '40' || row.targetState == '50') {
router.push({
name: 'Implementation/detail',
query: {
projectId: row.targetId,
state: row.state,
step: row.targetState,
source: 'home'
}
})
} else if (row.targetState == '70' && row.targetId) {
router.push({
name: 'Fund/detail',
query: {
id: row.targetId,
state: row.state,
source: 'home'
}
})
} else if (row.targetState == '80' && row.targetId) {
router.push({
name: 'Share/detail',
query: {
id: row.targetId,
state: row.state,
source: 'home'
}
})
} else if (row.targetState == '90' && row.targetId) {
router.push({
name: 'Phase/detail',
query: {
projectId: row.targetId,
source: 'home'
}
})
}
}
</script>
<style scoped>
</style>

View File

@@ -20,8 +20,10 @@
<el-card shadow="never" class="todo-bg" @tab-add="refreshTodoOrDoneList(activeName)">
<el-tabs v-model="activeName" editable>
<template #add-icon>
刷新一下
<div style="width: 31px"></div>
<div @click="refreshTodoOrDoneList" style="margin-left: -50px">
刷新一下
<div style="width: 31px"></div>
</div>
</template>
<el-tab-pane :label="'待办('+(todoList?.length||0) +''" name="first">
<div class="todo-top">
@@ -31,7 +33,7 @@
</el-icon>
<span>您有{{ todoList?.length || 0 }}条待办需要处理</span>
</div>
<div class="todo-more">
<div class="todo-more" @click="handleTodoList(1)">
<span>查看更多</span>
<el-icon color="#1F63E6" size="18">
<ArrowRight/>
@@ -75,7 +77,7 @@
</el-icon>
<span>您有{{ todoList.length }}条待办需要处理</span>
</div>
<div class="todo-more">
<div class="todo-more" @click="handleTodoList(2)">
<span>查看更多</span>
<el-icon color="#1F63E6" size="18">
<ArrowRight/>
@@ -293,7 +295,7 @@ import {useAuthStore} from '@/stores/userstore.js'
import * as echarts from 'echarts'
import {toThousands} from "@/utils/changePrice.js";
import {ElNotification} from "element-plus";
import {getHomeTaskInfo, getDoneTaskInfo,getHomeStatistics, getSpecialFundChart} from "@/api/home";
import {getHomeTaskInfo, getDoneTaskInfo, getHomeStatistics, getSpecialFundChart} from "@/api/home";
import {getResearchFundChart} from "@/api/research-fund";
import {getArticle} from "@/api/article";
@@ -331,7 +333,7 @@ const taskTabList = ref([
color: '#DCCEFA',
textColor: '#8600C5',
icon: 'home2.png',
num:0,
num: 0,
type: 'approved'
},
{
@@ -518,6 +520,17 @@ onMounted(async () => {
helpDocList.value = await getArticleList(2)
problemList.value = await getArticleList(3)
})
const handleTodoList = (type) => {
if (type == 1) {
router.push({
path: '/todolist',
})
} else if (type == 2){
router.push({
path: '/donelist',
})
}
}
const handleGoToArticleDetail = (row) => {
router.push({
name: 'Article/detail',
@@ -542,9 +555,8 @@ const goToSpecialFund = () => {
})
}
const refreshTodoOrDoneList = (name) => {
console.info("🚀 ~method:refreshTodoOrDoneList -----", name)
// getTodoList()
// getDoneList()
getTodoList()
getDoneList()
}
const initFundCharts = () => {
data.fundPieCharts = echarts.init(document.getElementById('fundPie')).setOption(fundPieOption.value)
@@ -556,10 +568,10 @@ const initMoneyCharts = () => {
const getTaskStatistics = () => {
getHomeStatistics().then(res => {
if (res.code === 1000) {
taskTabList.value[0].num = res.data.stayInitiation||0
taskTabList.value[1].num = res.data.approvedProject||0
taskTabList.value[2].num = res.data.implementation||0
taskTabList.value[3].num = res.data.acceptanceCheck||0
taskTabList.value[0].num = res.data.stayInitiation || 0
taskTabList.value[1].num = res.data.approvedProject || 0
taskTabList.value[2].num = res.data.implementation || 0
taskTabList.value[3].num = res.data.acceptanceCheck || 0
} else {
ElNotification({
title: '提示',
@@ -598,9 +610,7 @@ const getDoneList = () => {
})
}
const changeResearchFundDataByYear = (year) => {
console.info("🚀 ~method:changeResearchFundDataByYear -----")
if (year) {
console.info("🚀 243442-----")
getResearchChart(year)
}
}
@@ -1047,7 +1057,7 @@ const handleView = (row) => {
}
:deep(.el-tabs__new-tab ) {
width: auto !important;
width: 67px !important;
border: none !important;
color: #1476E3;
font-size: 14px;

View File

@@ -0,0 +1,144 @@
<template>
<fvTable ref="tableIns" :tableConfig="tableConfig" style="margin-top: 15px"></fvTable>
</template>
<script setup lang="jsx">
const router = useRouter()
const tableIns = ref()
const tableConfig = reactive({
columns: [
{
prop: 'index',
type: 'index',
label: '序号',
align: 'center',
width:60,
index: index => {
return (tableIns.value.getQuery().pageNum - 1) * tableIns.value.getQuery().pageSize + index + 1
}
},
{
prop: 'targetName',
label: '名称',
align: 'center'
},
{
prop: 'initiatorName',
label: '发起人',
align: 'center'
},
{
prop: 'targetState',
label: '流程类型',
align: 'center',
showOverflowTooltip: false,
currentRender: ({row, index}) => {
if (row.targetState !== null || row.targetState !== undefined) {
return (<Tag dictType={'todo_type'} value={row.targetState}/>)
} else {
return '--'
}
}
},
{
prop: 'taskName',
label: '当前节点',
align: 'center'
},
{
prop: 'submitTime',
label: '提交时间',
align: 'center'
},
{
prop: 'oper',
label: '操作',
align: 'center',
fixed: 'right',
width: 150,
showOverflowTooltip: false,
currentRender: ({row, index}) => {
let btn = []
btn.push({label: '查看', func: () => handleView(row), type: 'primary'})
return (
<div style={{width: '100%'}}>
{
btn.map(item => (
<el-button
type={item.type}
onClick={() => item.func()}
link
>
{item.label}
</el-button>
))
}
</div>
)
}
}
],
api: '/workflow/mosr/process/task',
})
const handleView = (row) => {
if (row.targetState == '00' && row.targetId) {
router.push({
name: 'Requirement/detail',
query: {
id: row.targetId,
source: 'home'
}
})
} else if (row.targetState == '10' && row.targetId) {
router.push({
name: 'Summary/detail',
query: {
projectId: row.targetId,
state: row.state,
source: 'home'
}
})
} else if (row.targetState == '20' || row.targetState == '40' || row.targetState == '50') {
router.push({
name: 'Implementation/detail',
query: {
projectId: row.targetId,
state: row.state,
step: row.targetState,
source: 'home'
}
})
} else if (row.targetState == '70' && row.targetId) {
router.push({
name: 'Fund/detail',
query: {
id: row.targetId,
state: row.state,
source: 'home'
}
})
} else if (row.targetState == '80' && row.targetId) {
router.push({
name: 'Share/detail',
query: {
id: row.targetId,
state: row.state,
source: 'home'
}
})
} else if (row.targetState == '90' && row.targetId) {
router.push({
name: 'Phase/detail',
query: {
projectId: row.targetId,
source: 'home'
}
})
}
}
</script>
<style scoped>
</style>