Merge pull request 'fix : 修复权限按钮细节' (#227) from dj into master

Reviewed-on: http://git.feashow.cn/clay/mosr-web/pulls/227
This commit is contained in:
2024-05-23 15:43:22 +00:00
17 changed files with 276 additions and 118 deletions

View File

@@ -1,9 +1,9 @@
import request from '@/utils/request.js' import request from '@/utils/request.js'
//项目立项 //项目立项
export const getApplyProcess = () => { export const getApplyProcess = (projectId) => {
return request({ return request({
url: '/workflow/mosr/project/approval/initiation/process', url: `/workflow/mosr/project/approval/initiation/process/${projectId}`,
method: "post" method: "get"
}); });
}; };
export const projectApply = (data) => { export const projectApply = (data) => {
@@ -49,11 +49,10 @@ export const projectCheck = (data) => {
data: data data: data
}); });
}; };
export const getProjectCheckProcess = (data) => { export const getProjectCheckProcess = (projectId) => {
return request({ return request({
url: '/workflow/mosr/project/implementation/process', url: `/workflow/mosr/project/implementation/process/${projectId}`,
method: "post", method: "get"
data: data
}); });
}; };
@@ -79,10 +78,9 @@ export const projectConclusion = (data) => {
data: data data: data
}); });
}; };
export const getProjectConclusionProcess = (data) => { export const getProjectConclusionProcess = () => {
return request({ return request({
url: '/workflow/mosr/project/filing/process', url: '/workflow/mosr/project/filing/process',
method: "post", method: "get"
data: data
}); });
}; };

View File

@@ -1,5 +1,5 @@
<template> <template>
<div> <div v-loading="loading">
<fvForm :schema="schema" @getInstance="(e)=>form = e"></fvForm> <fvForm :schema="schema" @getInstance="(e)=>form = e"></fvForm>
<!-- <AttachmentUpload></AttachmentUpload> --> <!-- <AttachmentUpload></AttachmentUpload> -->
<el-form :model="formData" label-width="auto"> <el-form :model="formData" label-width="auto">
@@ -24,7 +24,7 @@
<process-diagram-viewer v-if="processViewer" :id-name="type"/> <process-diagram-viewer v-if="processViewer" :id-name="type"/>
</div> </div>
</div> </div>
<Opinion: v-if="data.taskId" :formData="formData" :taskId="formData.taskId"></Opinion:> <!-- <Opinion: v-if="data.taskId" :formData="formData" :taskId="formData.taskId"></Opinion:>-->
</div> </div>
</template> </template>
@@ -60,9 +60,14 @@ const props = defineProps({
type: { type: {
type: String, type: String,
default: 'approval' default: 'approval'
}, loading: {
type: Boolean,
default: false
} }
}) })
watch(() => props.loading, (newVal) => {
props.loading = newVal
}, {deep: true})
const form = ref() const form = ref()
const localData = reactive({ const localData = reactive({
@@ -119,7 +124,22 @@ const schema = computed(()=>{
prop: 'singleFile', prop: 'singleFile',
colProps: { colProps: {
span: 24 span: 24
} },
component: ()=>(
<div>
{
props.formData.singleFile?.originalFileName ?
<span
style={{color: '#409EFF', cursor: 'pointer'}}
onClick={()=>handleDownload(props.formData.singleFile)}
>
{props.formData.singleFile?.originalFileName}
</span> :
<span>{'--'}</span>
}
</div>
)
}, },
] ]
} else { } else {
@@ -129,7 +149,22 @@ const schema = computed(()=>{
prop: 'singleFile', prop: 'singleFile',
colProps: { colProps: {
span: 24 span: 24
} },
component: ()=>(
<div>
{
props.formData.singleFile?.originalFileName ?
<span
style={{color: '#409EFF', cursor: 'pointer'}}
onClick={()=>handleDownload(props.formData.singleFile)}
>
{props.formData.singleFile?.originalFileName}
</span> :
<span>{'--'}</span>
}
</div>
)
}, },
] ]
} }

View File

@@ -1,15 +1,18 @@
<template> <template>
<baseTitle title="审核意见"></baseTitle>
<fvForm :schema="schema" @getInstance="(e)=>form = e"></fvForm> <fvForm :schema="schema" @getInstance="(e)=>form = e"></fvForm>
<div class="oper"> <div class="oper-page-btn">
<el-button type="danger" @click="handleReject">驳回</el-button> <el-button type="danger" @click="handleReject">驳回</el-button>
<el-button type="primary" @click="handleAgree">同意</el-button> <el-button color="#DED0B2" @click="handleAgree">同意</el-button>
</div> </div>
</template> </template>
<script setup lang="jsx"> <script setup lang="jsx">
import { ElLoading, ElNotification } from 'element-plus'; import {ElNotification} from 'element-plus';
import { agreeTask, rejectTask} from "@/api/project-demand/index.js"; import {agreeTask, rejectTask} from "@/api/project-demand/index.js";
const route = useRoute()
const router = useRouter()
const props = defineProps({ const props = defineProps({
taskId: { taskId: {
type: String, type: String,
@@ -22,10 +25,10 @@ const props = defineProps({
}) })
const form = ref() const form = ref()
const schema = computed(()=>{ const schema = computed(() => {
return [ return [
{ {
label: '审核意见', label: '',
prop: 'auditOpinion', prop: 'auditOpinion',
component: 'el-input', component: 'el-input',
colProps: { colProps: {
@@ -39,16 +42,29 @@ const schema = computed(()=>{
} }
] ]
}) })
const back = () => {
// { switch (route.name) {
// "auditOpinion": "统一", case 'Initiation/detail':
// "formData": {"formData":""}, router.push({name: 'Initiation'})
// "taskId": "156e69b7-15eb-11ef-a152-f268fc747b04" break;
// } case 'Filing/detail':
router.push({name: 'Filing'})
break;
case 'Implementation/detail':
router.push({name: 'Implementation'})
break;
case 'Summary/detail':
router.push({name: 'Summary'})
break;
case 'Requirement/detail':
router.push({name: 'Requirement'})
break;
}
}
// 驳回 // 驳回
const handleReject = async () => { const handleReject = async () => {
const values = form.value.getValues() const values = form.value.getValues()
if(!values.auditOpinion) { if (!values.auditOpinion) {
ElNotification({ ElNotification({
title: '提示', title: '提示',
message: '请填写审核意见', message: '请填写审核意见',
@@ -56,12 +72,18 @@ const handleReject = async () => {
}) })
return return
} }
console.log('values', values)
const params = { const params = {
// taskId: props.taskId, taskId: props.taskId,
// formData: props.formData, ...values
// ...values
} }
const res = await rejectTask(params) const res = await rejectTask(params)
ElNotification({
title: '提示',
message: res.msg,
type: res.code === 1000 ? 'success' : 'error'
})
back()
} }
const handleAgree = async () => { const handleAgree = async () => {
@@ -72,9 +94,15 @@ const handleAgree = async () => {
...values ...values
} }
const res = await agreeTask(params) const res = await agreeTask(params)
ElNotification({
title: '提示',
message: res.msg,
type: res.code === 1000 ? 'success' : 'error'
})
back()
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
</style> </style>

View File

@@ -161,10 +161,10 @@
<process-diagram-viewer v-if="processViewer" id-name="summaryProcess"/> <process-diagram-viewer v-if="processViewer" id-name="summaryProcess"/>
</div> </div>
</div> </div>
<div class="oper-page-btn" v-if="data.state === '1' && data.taskId"> <!-- <div class="oper-page-btn" v-if="data.state === '1' && data.taskId">-->
<el-button @click="handleReject(summaryForm)">驳回</el-button> <!-- <el-button @click="handleReject(summaryForm)">驳回</el-button>-->
<el-button color="#DED0B2" @click="handleAgree">同意</el-button> <!-- <el-button color="#DED0B2" @click="handleAgree">同意</el-button>-->
</div> <!-- </div>-->
</el-form> </el-form>
</div> </div>
</template> </template>
@@ -294,7 +294,6 @@ const handleDownload = (row) => {
watch( watch(
() => props.formData, () => props.formData,
(val) => { (val) => {
console.log(val, 'ssss');
} }
) )
watch(() => props.processViewer, (newVal) => { watch(() => props.processViewer, (newVal) => {

View File

@@ -449,11 +449,11 @@ const init = async () => {
const res = await getSubCompOpt() const res = await getSubCompOpt()
companyOption.value = res.data companyOption.value = res.data
getProcessInfo().then(res => { getProcessInfo().then(res => {
// ElNotification({ ElNotification({
// title: '提示', title: '提示',
// message: res.msg, message: res.msg,
// type: res.code === 1000 ? 'success' : 'error' type: res.code === 1000 ? 'success' : 'error'
// }) })
if (res.code === 1000) { if (res.code === 1000) {
let data = res.data let data = res.data
deploymentId.value = data.deploymentId deploymentId.value = data.deploymentId

View File

@@ -21,7 +21,7 @@ export const requirementReported = (data) => {
export const getProcessInfo = () => { export const getProcessInfo = () => {
return request({ return request({
url: '/workflow/mosr/requirement/collect/process', url: '/workflow/mosr/requirement/collect/process',
method: "post" method: "get"
}); });
}; };
export const getDetail = (projectId) => { export const getDetail = (projectId) => {

View File

@@ -5,11 +5,11 @@
:processViewer="summaryProcessViewer" :companyOption="companyOption" :loading="loading"/> :processViewer="summaryProcessViewer" :companyOption="companyOption" :loading="loading"/>
<summary-detail v-show="showActive == '10'" :formData="summaryData.formData" :data="summaryData" <summary-detail v-show="showActive == '10'" :formData="summaryData.formData" :data="summaryData"
:processViewer="summaryProcessViewer" :loading="loading"/> :processViewer="summaryProcessViewer" :loading="loading"/>
<ApprovalDetail v-show="showActive == '20'" :formData="summaryData.formData" :data="summaryData" :processViewer="summaryProcessViewer"></ApprovalDetail> <ApprovalDetail v-show="showActive == '20'" :formData="summaryData.formData" :data="summaryData" :processViewer="summaryProcessViewer" :loading="loading"></ApprovalDetail>
</template> </template>
</steps> </steps>
<opinion v-if="commonForm.taskId" :formData="formData" :taskId="formData.taskId"></opinion> <opinion v-if="summaryData.taskId" :formData="summaryData.formData" :taskId="summaryData.taskId"></opinion>
</template> </template>
<script setup lang="jsx"> <script setup lang="jsx">
@@ -22,7 +22,6 @@ import {ElNotification} from "element-plus";
const route = useRoute() const route = useRoute()
const companyOption = ref([]) const companyOption = ref([])
const commonForm = ref({})
const summaryData = ref({}) const summaryData = ref({})
const summaryProcessViewer = ref(true) const summaryProcessViewer = ref(true)
const loading = ref(false) const loading = ref(false)
@@ -49,7 +48,6 @@ const getInfo = async (state) => {
if(code===1000){ if(code===1000){
summaryData.value = data; summaryData.value = data;
loading.value = false loading.value = false
console.log('data-====================',data)
processStore.setDesign(data) processStore.setDesign(data)
processStore.runningList.value = data.runningList; processStore.runningList.value = data.runningList;
processStore.endList.value = data.endList; processStore.endList.value = data.endList;

View File

@@ -229,6 +229,11 @@ const getDetailInfo = async () => {
} }
const init = () => { const init = () => {
getProjectConclusionProcess().then(res => { getProjectConclusionProcess().then(res => {
ElNotification({
title: '提示',
message: res.msg,
type: res.code === 1000 ? 'success' : 'error'
})
processDiagramViewer.value = false processDiagramViewer.value = false
if (res.code === 1000) { if (res.code === 1000) {
let data = res.data let data = res.data

View File

@@ -1,21 +1,26 @@
<template> <template>
<steps :active="'0'" @setDetail="setDetail" @stepChange="stepChange"> <steps :active="'0'" @setDetail="setDetail" @stepChange="stepChange">
<template #content> <template #content>
<collection-detail <collection-detail
:formData="collectionData.formData" :formData="commonForm.formData"
:data="collectionData" :data="commonForm"
:processViewer="commonProvessViewer" :processViewer="commonProvessViewer"
:companyOption="companyOption" :companyOption="companyOption"
@getInfo="getDemandCollectionInfo" v-show="showActive == '00'"
v-show="showActive == '00'" :loading="loading"
/> />
<summary-detail v-show="showActive == '10'" :formData="summaryData.formData" :data="summaryData" :processViewer="commonProvessViewer"/> <summary-detail v-show="showActive == '10'" :formData="commonForm.formData" :data="commonForm"
<ApprovalDetail type="approval" v-show="showActive == '20'" :formData="commonForm.formData" :data="commonForm" :processViewer="commonProvessViewer"></ApprovalDetail> :processViewer="commonProvessViewer" :loading="loading"/>
<ApprovalDetail type="execute" v-show="showActive == '40'" :formData="commonForm.formData" :data="commonForm" :processViewer="commonProvessViewer"></ApprovalDetail> <ApprovalDetail type="approval" v-show="showActive == '20'" :formData="commonForm.formData" :data="commonForm"
<ApprovalDetail type="archivist" v-show="showActive == '50'" :formData="commonForm.formData" :data="commonForm" :processViewer="commonProvessViewer"></ApprovalDetail> :processViewer="commonProvessViewer" :loading="loading"></ApprovalDetail>
<ApprovalDetail type="execute" v-show="showActive == '40'" :formData="commonForm.formData" :data="commonForm"
:processViewer="commonProvessViewer" :loading="loading"></ApprovalDetail>
<ApprovalDetail type="archivist" v-show="showActive == '50'" :formData="commonForm.formData" :data="commonForm"
:processViewer="commonProvessViewer" :loading="loading"></ApprovalDetail>
</template> </template>
</steps> </steps>
<opinion v-if="commonForm.taskId" :formData="commonForm.formData" :taskId="commonForm.taskId"/>
</template> </template>
<script setup lang="jsx"> <script setup lang="jsx">
@@ -25,19 +30,23 @@ import {useProcessStore} from '@/stores/processStore.js';
import CollectionDetail from "@/components/DetailComponent/CollectionDetail.vue"; import CollectionDetail from "@/components/DetailComponent/CollectionDetail.vue";
import SummaryDetail from "@/components/DetailComponent/SummaryDetail.vue"; import SummaryDetail from "@/components/DetailComponent/SummaryDetail.vue";
import ApprovalDetail from "@/components/DetailComponent/ApprovalDetail.vue"; import ApprovalDetail from "@/components/DetailComponent/ApprovalDetail.vue";
import { getMapProjectStateInfo } from '@/components/steps/api'; import {getMapProjectStateInfo} from '@/components/steps/api';
import { ElLoading } from "element-plus"; import {ElLoading} from "element-plus";
const route = useRoute()
const companyOption = ref([])
const loading = ref(false)
const processStore = useProcessStore()
const activeName = ref('first') const activeName = ref('first')
const handleClick = (tab, event) => { const handleClick = (tab, event) => {
console.log(tab, event) console.log(tab, event)
if(tab.index.value === 0){ if (tab.index.value === 0) {
} }
} }
const getCompanyOption = async () => { const getCompanyOption = async () => {
const res = await getSubCompOpt() const res = await getSubCompOpt()
companyOption.value = res.data companyOption.value = res.data
@@ -50,13 +59,17 @@ const commonProvessViewer = ref(true)
const getAllInfo = async (state) => { const getAllInfo = async (state) => {
const loading = ElLoading.service({fullscreen: true}) const loading = ElLoading.service({fullscreen: true})
try { try {
state == '00' && ( await getCompanyOption() ) state == '00' && (await getCompanyOption())
commonProvessViewer.value = false commonProvessViewer.value = false
const { data, code } = await getMapProjectStateInfo(route.query.projectId, state) loading.value = true
if(state == '00') { const {data, code} = await getMapProjectStateInfo(route.query.projectId, state)
collectionData.value = data; // if(state == '00') {
} else if(state == '10') { // collectionData.value = data;
summaryData.value = data; // } else if(state == '10') {
// summaryData.value = data;
// }
if(code===1000){
loading.value = false
} }
commonForm.value = data commonForm.value = data
processStore.setDesign(data) processStore.setDesign(data)
@@ -73,7 +86,7 @@ const getAllInfo = async (state) => {
} catch { } catch {
loading.close() loading.close()
} }
} }
const showActive = ref() const showActive = ref()
@@ -90,19 +103,23 @@ const stepChange = (data) => {
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.detail-block{ .detail-block {
padding-top: 15px; padding-top: 15px;
:deep(.el-tabs__nav-scroll){
:deep(.el-tabs__nav-scroll) {
width: 100%; width: 100%;
display: flex; display: flex;
.el-tabs__nav{
.el-tabs__nav {
display: flex; display: flex;
flex: 1; flex: 1;
.el-tabs__item{
.el-tabs__item {
flex: 1; flex: 1;
font-size: 16px; font-size: 16px;
} }
.is-active{
.is-active {
color: black; color: black;
background-color: #DED0B2; background-color: #DED0B2;
} }

View File

@@ -102,6 +102,11 @@ const tableConfig = reactive({
label: '所属公司', label: '所属公司',
align: 'center' align: 'center'
}, },
{
prop: 'approveName',
label: '审批人',
align: 'center'
},
{ {
prop: 'projectType', prop: 'projectType',
label: '项目类型', label: '项目类型',
@@ -127,6 +132,11 @@ const tableConfig = reactive({
label: '起止时间', label: '起止时间',
align: 'center' align: 'center'
}, },
{
prop: 'taskNode',
label: '当前节点',
align: 'center'
},
{ {
prop: 'state', prop: 'state',
label: '状态', label: '状态',
@@ -146,20 +156,27 @@ const tableConfig = reactive({
align: 'center', align: 'center',
showOverflowTooltip: false, showOverflowTooltip: false,
currentRender: ({row, index}) => { currentRender: ({row, index}) => {
let btn = [{label: '详情', func: () => handleDetail(row), type: 'primary'}] let btn = []
// if (row.state === '3') { let buttons = new Set(Array.from(row.buttons))
btn.push({label: '附件', func: () => handleAttachment(row), type: 'primary'}) if (buttons.has("details")) {
// } else if (row.state === '4') { btn.push({label: '详情', prem: ['mosr:requirement:info'], func: () => handleDetail(row), type: 'primary'})
btn.push({label: '结项', func: () => handleConclusion(row), type: 'primary'}) }
btn.push({label: '编辑', func: () => handleEdit(row), type: 'primary'}) if (buttons.has("attachments")) {
// } btn.push({label: '附件',prem: ['mosr:requirement:resubmit'], func: () => handleAttachment(row), type: 'primary'})
}
if (buttons.has("entry")) {
btn.push({label: '结项',prem: ['mosr:requirement:del'], func: () => handleConclusion(row), type: 'primary'})
}
if (buttons.has("edit")) {
btn.push({label: '编辑',prem: ['mosr:requirement:info'], func: () => handleEdit(row), type: 'primary'})
}
return ( return (
<div style={{width: '100%'}}> <div style={{width: '100%'}}>
{ {
btn.map(item => ( btn.map(item => (
<el-button <el-button
type={item.type} type={item.type}
// v-perm={item.auth} v-perm={item.prem}
onClick={() => item.func()} onClick={() => item.func()}
link link
> >
@@ -185,7 +202,8 @@ const handleDetail = (row) => {
router.push({ router.push({
name:'Filing/detail', name:'Filing/detail',
query: { query: {
id: row.requirementId id: row.requirementId,
projectId: row.projectId
} }
}) })
} }

View File

@@ -195,7 +195,12 @@ const getDetailInfo = async () => {
}) })
} }
const init = () => { const init = () => {
getProjectCheckProcess().then(res => { getProjectCheckProcess(route.query.projectId).then(res => {
ElNotification({
title: '提示',
message: res.msg,
type: res.code === 1000 ? 'success' : 'error'
})
processDiagramViewer.value = false processDiagramViewer.value = false
if (res.code === 1000) { if (res.code === 1000) {
let data = res.data let data = res.data

View File

@@ -2,20 +2,20 @@
<steps :active="'0'" @setDetail="setDetail" @stepChange="stepChange"> <steps :active="'0'" @setDetail="setDetail" @stepChange="stepChange">
<template #content> <template #content>
<collection-detail <collection-detail
:formData="collectionData.formData" :formData="commonForm.formData"
:data="collectionData" :data="commonForm"
:processViewer="commonProvessViewer" :processViewer="commonProvessViewer"
:companyOption="companyOption" :companyOption="companyOption"
@getInfo="getDemandCollectionInfo"
v-show="showActive == '00'" v-show="showActive == '00'"
:loading="loading"
/> />
<summary-detail v-show="showActive == '10'" :formData="summaryData.formData" :data="summaryData" :processViewer="commonProvessViewer"/> <summary-detail v-show="showActive == '10'" :formData="commonForm.formData" :data="commonForm" :processViewer="commonProvessViewer" :loading="loading"/>
<ApprovalDetail type="approval" v-show="showActive == '20'" :formData="commonForm.formData" :data="commonForm" :processViewer="commonProvessViewer"></ApprovalDetail> <ApprovalDetail type="approval" v-show="showActive == '20'" :formData="commonForm.formData" :data="commonForm" :processViewer="commonProvessViewer" :loading="loading"></ApprovalDetail>
<ApprovalDetail type="execute" v-show="showActive == '40'" :formData="commonForm.formData" :data="commonForm" :processViewer="commonProvessViewer"></ApprovalDetail> <ApprovalDetail type="execute" v-show="showActive == '40'" :formData="commonForm.formData" :data="commonForm" :processViewer="commonProvessViewer" :loading="loading"></ApprovalDetail>
</template> </template>
</steps> </steps>
<opinion v-if="commonForm.taskId" :formData="formData" :taskId="formData.taskId"/> <opinion v-if="commonForm.taskId" :formData="commonForm.formData" :taskId="commonForm.taskId"/>
</template> </template>
<script setup lang="jsx"> <script setup lang="jsx">
@@ -42,6 +42,7 @@ const route = useRoute()
const activeName = ref('first') const activeName = ref('first')
const collectionData = ref({}) const collectionData = ref({})
const summaryData = ref({}) const summaryData = ref({})
const loading = ref(false)
const collectionProcessViewer = ref(true) const collectionProcessViewer = ref(true)
const summaryProcessViewer = ref(true) const summaryProcessViewer = ref(true)
const processStore = useProcessStore() const processStore = useProcessStore()
@@ -63,12 +64,16 @@ const getAllInfo = async (state) => {
try { try {
state == '00' && ( await getCompanyOption() ) state == '00' && ( await getCompanyOption() )
commonProvessViewer.value = false commonProvessViewer.value = false
loading.value = true
const { data, code } = await getMapProjectStateInfo(route.query.projectId, state) const { data, code } = await getMapProjectStateInfo(route.query.projectId, state)
if(state == '00') { if(state == '00') {
collectionData.value = data; collectionData.value = data;
} else if(state == '10') { } else if(state == '10') {
summaryData.value = data; summaryData.value = data;
} }
if(code===1000){
loading.value = false
}
commonForm.value = data commonForm.value = data
processStore.setDesign(data) processStore.setDesign(data)
processStore.runningList.value = data.runningList; processStore.runningList.value = data.runningList;

View File

@@ -106,6 +106,11 @@ const tableConfig = reactive({
label: '所属公司', label: '所属公司',
align: 'center' align: 'center'
}, },
{
prop: 'approveName',
label: '审批人',
align: 'center'
},
{ {
prop: 'projectType', prop: 'projectType',
label: '项目类型', label: '项目类型',
@@ -131,6 +136,11 @@ const tableConfig = reactive({
label: '起止时间', label: '起止时间',
align: 'center' align: 'center'
}, },
{
prop: 'taskNode',
label: '当前节点',
align: 'center'
},
{ {
prop: 'state', prop: 'state',
label: '状态', label: '状态',
@@ -150,23 +160,36 @@ const tableConfig = reactive({
align: 'center', align: 'center',
showOverflowTooltip: false, showOverflowTooltip: false,
currentRender: ({row, index}) => { currentRender: ({row, index}) => {
let btn = [{label: '详情', func: () => handleDetail(row), type: 'primary'}] let btn = []
// if (row.state === '3') { let buttons = new Set(Array.from(row.buttons))
btn.push( if (buttons.has("details")) {
{label: '验收', func: () => handleCheck(row), type: 'primary'}, btn.push({label: '详情', prem: ['mosr:requirement:info'], func: () => handleDetail(row), type: 'primary'})
{label: '编辑', func: () => handleEdit(row), type: 'primary'}, }
{label: '台账', func: () => handleStandingBook(row), type: 'primary'}, if (buttons.has("check")) {
{label: '附件', func: () => handleAttachment(row), type: 'primary'}, btn.push({label: '验收',prem: ['mosr:requirement:resubmit'], func: () => handleCheck(row), type: 'primary'})
{label: '查看分摊', func: () => handleShare(row), type: 'primary'} }
) if (buttons.has("edit")) {
// } btn.push({label: '编辑',prem: ['mosr:requirement:del'], func: () => handleEdit(row), type: 'primary'})
}
if (buttons.has("standing")) {
btn.push({label: '台账',prem: ['mosr:requirement:info'], func: () => handleStandingBook(row), type: 'primary'})
}
if (buttons.has("attachments")) {
btn.push({label: '附件',prem: ['mosr:requirement:info'], func: () => handleAttachment(row), type: 'primary'})
}
if (buttons.has("viewAllocation")) {
btn.push({label: '查看分摊',prem: ['mosr:requirement:info'], func: () => handleShare(row), type: 'primary'})
}
if (buttons.has("phaseChange")) {
btn.push({label: '阶段变更',prem: ['mosr:requirement:info'], func: () => handleChange(row), type: 'primary'})
}
return ( return (
<div style={{width: '100%'}}> <div style={{width: '100%'}}>
{ {
btn.map(item => ( btn.map(item => (
<el-button <el-button
type={item.type} type={item.type}
// v-perm={item.auth} v-perm={item.prem}
onClick={() => item.func()} onClick={() => item.func()}
link link
> >

View File

@@ -222,7 +222,12 @@ const getDetailInfo = async () => {
}) })
} }
const init = () => { const init = () => {
getApplyProcess().then(res => { getApplyProcess(route.query.projectId).then(res => {
ElNotification({
title: '提示',
message: res.msg,
type: res.code === 1000 ? 'success' : 'error'
})
processDiagramViewer.value = false processDiagramViewer.value = false
if (res.code === 1000) { if (res.code === 1000) {
let data = res.data let data = res.data

View File

@@ -2,19 +2,19 @@
<steps :active="'0'" @setDetail="setDetail" @stepChange="stepChange"> <steps :active="'0'" @setDetail="setDetail" @stepChange="stepChange">
<template #content> <template #content>
<collection-detail <collection-detail
:formData="collectionData.formData" :formData="commonForm.formData"
:data="collectionData" :data="commonForm"
:processViewer="commonProvessViewer" :processViewer="commonProvessViewer"
:companyOption="companyOption" :companyOption="companyOption"
@getInfo="getDemandCollectionInfo"
v-show="showActive == '00'" v-show="showActive == '00'"
:loading="loading"
/> />
<summary-detail v-show="showActive == '10'" :formData="summaryData.formData" :data="summaryData" :processViewer="commonProvessViewer"/> <summary-detail v-show="showActive == '10'" :formData="commonForm.formData" :data="commonForm" :processViewer="commonProvessViewer" :loading="loading"/>
<ApprovalDetail v-show="showActive == '20'" :formData="commonForm.formData" :data="commonForm" :processViewer="commonProvessViewer"></ApprovalDetail> <ApprovalDetail v-show="showActive == '20'" :formData="commonForm.formData" :data="commonForm" :processViewer="commonProvessViewer" :loading="loading"></ApprovalDetail>
</template> </template>
</steps> </steps>
<opinion v-if="commonForm.taskId" :formData="formData" :taskId="formData.taskId"/> <opinion v-if="commonForm.taskId" :formData="commonForm.formData" :taskId="commonForm.taskId"/>
</template> </template>
<script setup lang="jsx"> <script setup lang="jsx">
@@ -34,6 +34,7 @@ const activeName = ref('first')
const collectionData = ref({}) const collectionData = ref({})
const summaryData = ref({}) const summaryData = ref({})
const collectionProcessViewer = ref(true) const collectionProcessViewer = ref(true)
const loading = ref(false)
const summaryProcessViewer = ref(true) const summaryProcessViewer = ref(true)
const processStore = useProcessStore() const processStore = useProcessStore()
const companyOption = ref([]) const companyOption = ref([])
@@ -100,12 +101,16 @@ const getAllInfo = async (state) => {
try { try {
state == '00' && ( await getCompanyOption() ) state == '00' && ( await getCompanyOption() )
commonProvessViewer.value = false commonProvessViewer.value = false
loading.value = true
const { data, code } = await getMapProjectStateInfo(route.query.projectId, state) const { data, code } = await getMapProjectStateInfo(route.query.projectId, state)
if(state == '00') { if(state == '00') {
collectionData.value = data; collectionData.value = data;
} else if(state == '10') { } else if(state == '10') {
summaryData.value = data; summaryData.value = data;
} }
if(code===1000){
loading.value = false
}
console.log(data, 'data--22'); console.log(data, 'data--22');
commonForm.value = data commonForm.value = data
processStore.setDesign(data) processStore.setDesign(data)

View File

@@ -98,10 +98,15 @@ const tableConfig = reactive({
align: 'center' align: 'center'
}, },
{ {
prop: 'affiliatedCompanyId', prop: 'affiliatedCompany',
label: '所属公司', label: '所属公司',
align: 'center' align: 'center'
}, },
{
prop: 'approveName',
label: '审批人',
align: 'center'
},
{ {
prop: 'projectType', prop: 'projectType',
label: '项目类型', label: '项目类型',
@@ -127,6 +132,11 @@ const tableConfig = reactive({
label: '起止时间', label: '起止时间',
align: 'center' align: 'center'
}, },
{
prop: 'taskNode',
label: '当前节点',
align: 'center'
},
{ {
prop: 'state', prop: 'state',
label: '状态', label: '状态',
@@ -146,11 +156,19 @@ const tableConfig = reactive({
align: 'center', align: 'center',
showOverflowTooltip: false, showOverflowTooltip: false,
currentRender: ({row, index}) => { currentRender: ({row, index}) => {
let btn = [{label: '详情', func: () => handleDetail(row), type: 'primary'}] let btn = []
if (row.state === '3') { let buttons = new Set(Array.from(row.buttons))
btn.push({label: '编辑', func: () => handleEdit(row), type: 'primary'}) if (buttons.has("details")) {
} else if (row.state === '0') { btn.push({label: '详情', prem: ['mosr:requirement:info'], func: () => handleDetail(row), type: 'primary'})
btn.push({label: '申请', func: () => handleApply(row), type: 'primary'}) }
if (buttons.has("edit")) {
btn.push({label: '编辑',prem: ['mosr:requirement:resubmit'], func: () => handleEdit(row), type: 'primary'})
}
// if (buttons.has("delete")) {
// btn.push({label: '删除',prem: ['mosr:requirement:del'], func: () => handleDelete(row), type: 'primary'})
// }
if (buttons.has("apply")) {
btn.push({label: '申请',prem: ['mosr:requirement:info'], func: () => handleApply(row), type: 'primary'})
} }
return ( return (
<div style={{width: '100%'}}> <div style={{width: '100%'}}>
@@ -158,7 +176,7 @@ const tableConfig = reactive({
btn.map(item => ( btn.map(item => (
<el-button <el-button
type={item.type} type={item.type}
// v-perm={item.auth} v-perm={item.prem}
onClick={() => item.func()} onClick={() => item.func()}
link link
> >

View File

@@ -46,7 +46,6 @@ const props = defineProps({
}) })
const init = () => { const init = () => {
console.log('props.userInfo',props.userInfo)
for (let user of props.userInfo) { for (let user of props.userInfo) {
initUser(user) initUser(user)
} }