处理结项后的情况

main
wuyize 2022-07-13 16:28:00 +08:00
parent 26e43ae624
commit 9c77e67531
6 changed files with 62 additions and 50 deletions

View File

@ -15,9 +15,15 @@ export default {
chartData: [] chartData: []
} }
}, },
mounted() { props: {
enable: false,
},
watch: {
enable: function (val) {
if(val)
this.initEcharts(); this.initEcharts();
}, },
},
computed: { computed: {
getTotalNumber() { getTotalNumber() {
return this.dataList.reduce((prev, item) => { return this.dataList.reduce((prev, item) => {

View File

@ -74,9 +74,9 @@ const tableHeight = ref();
const {proxy, ctx} = getCurrentInstance() const {proxy, ctx} = getCurrentInstance()
onMounted(() => { onMounted(() => {
// innerHeight-offsetTop-110 // innerHeight-offsetTop-110
tableHeight.value = window.innerHeight /*- tableRef.value.$el.offsetTop*/ - 400; tableHeight.value = window.innerHeight /*- tableRef.value.$el.offsetTop*/ - 300;
window.onresize = () => { window.onresize = () => {
tableHeight.value = window.innerHeight /*- tableRef.value.$el.offsetTop*/ - 400; tableHeight.value = window.innerHeight /*- tableRef.value.$el.offsetTop*/ - 300;
}; };
}); });
const router = useRouter() const router = useRouter()
@ -185,17 +185,19 @@ export default {
staffId: Number staffId: Number
} }
}, },
computed: {}, computed: {
canCreateProject() {
if (this.$store && this.$store.state.staff)
return this.$store.state.staff.staffGlobalLevel < 3
else
return false
},
},
mounted() { mounted() {
}, },
methods: { methods: {
canCreateProject() {
if (this.$store && this.$store.state.staff)
return this.$store.state.staff.staffGlobalLevel > 3
else
return false
},
showCloseProjectButton(row) { showCloseProjectButton(row) {
return this.$store.state.staff === null ? false : (this.$store.state.staff.staffId === row.projectCreator) return this.$store.state.staff === null ? false : (this.$store.state.staff.staffId === row.projectCreator)
}, },

View File

@ -60,6 +60,7 @@
</el-header> </el-header>
<el-main style="overflow: unset"> <el-main style="overflow: unset">
<router-view <router-view
:project="project"
:projectAccessLevel="projectAccessLevel" :projectAccessLevel="projectAccessLevel"
:projectGroup="projectGroup" :projectGroup="projectGroup"
@groupChanged="groupChanged" @groupChanged="groupChanged"
@ -88,6 +89,7 @@ export default {
projectStaffPosition: '', projectStaffPosition: '',
projectAccessLevel: 3, projectAccessLevel: 3,
menuDefaultActive: '1', menuDefaultActive: '1',
} }
}, },

View File

@ -5,7 +5,7 @@
<div style="margin: 0 10px 0 10px;display: flex;flex-direction: row;justify-content: space-between" <div style="margin: 0 10px 0 10px;display: flex;flex-direction: row;justify-content: space-between"
ref="left_title_Ref"> ref="left_title_Ref">
<p style="text-align:center; 'Segoe UI',sans-serif;font-size: 20px;font-weight: bold;color: #606266">项目团队</p> <p style="text-align:center; 'Segoe UI',sans-serif;font-size: 20px;font-weight: bold;color: #606266">项目团队</p>
<el-button type="primary" @click="onCreatePerson"></el-button> <el-button v-if="!project.completed" type="primary" @click="onCreatePerson"></el-button>
</div> </div>
<div style="flex: 1; margin: 30px 0 0 0; background-color: white; border-radius: 10px;padding: 20px; <div style="flex: 1; margin: 30px 0 0 0; background-color: white; border-radius: 10px;padding: 20px;
display: flex;flex-direction: column;justify-content: space-between"> display: flex;flex-direction: column;justify-content: space-between">
@ -18,7 +18,7 @@
<el-table-column prop="projectStaffPosition" label="职位" min-width="40%" :formatter="jobFormatter"/> <el-table-column prop="projectStaffPosition" label="职位" min-width="40%" :formatter="jobFormatter"/>
<el-table-column align="right" min-width="35%"> <el-table-column align="right" min-width="35%">
<template #default="scope"> <template #default="scope">
<div v-if="getOperationsVisible(scope.row)" <div v-if="!project.completed&&getOperationsVisible(scope.row)"
style="width: 100%;display: flex;flex-direction: row;justify-content: flex-end"> style="width: 100%;display: flex;flex-direction: row;justify-content: flex-end">
<el-button <el-button
@click.native="onEditClick(scope.row)" @click.native="onEditClick(scope.row)"
@ -149,6 +149,7 @@ export default {
}, },
emits: ['groupChanged'], emits: ['groupChanged'],
props: { props: {
project: {completed:true},
projectAccessLevel: Number, projectAccessLevel: Number,
projectGroup: Array projectGroup: Array
}, },

View File

@ -73,7 +73,7 @@
<div style="margin: 0 10px 0 10px; <div style="margin: 0 10px 0 10px;
display: flex;flex-direction: row;justify-content: space-between"> display: flex;flex-direction: row;justify-content: space-between">
<p style="font-family: 'Segoe UI',sans-serif;font-size: 20px;font-weight: bold;color: #606266">详细信息</p> <p style="font-family: 'Segoe UI',sans-serif;font-size: 20px;font-weight: bold;color: #606266">详细信息</p>
<el-button v-if="projectAccessLevel===1" type="primary" @click.native="onEditProjectClick"></el-button> <el-button v-if="!project.completed&&projectAccessLevel===1" type="primary" @click.native="onEditProjectClick"></el-button>
</div> </div>
<div style="flex:1;margin-top: 30px;padding: 20px; <div style="flex:1;margin-top: 30px;padding: 20px;
display: flex;flex-direction: column; justify-content: space-between;background-color: white; border-radius: 10px; "> display: flex;flex-direction: column; justify-content: space-between;background-color: white; border-radius: 10px; ">
@ -215,13 +215,13 @@
</div> </div>
</div> </div>
<div style="height: 500px;margin: 0 30px 30px 30px; <div v-if="!project.completed" style="height: 500px;margin: 0 30px 30px 30px;
display: flex;flex-direction: row;justify-content: space-between"> display: flex;flex-direction: row;justify-content: space-between">
<div style="flex: 1;height: 100%;display: flex;flex-direction: column"> <div style="flex: 1;height: 100%;display: flex;flex-direction: column">
<p class="p-title" style="margin-left: 10px">工作项完成趋势</p> <p class="p-title" style="margin-left: 10px">工作项完成趋势</p>
<div style="flex:1;margin-top: 30px;padding: 20px; <div style="flex:1;margin-top: 30px;padding: 20px;
display: flex;flex-direction: column; justify-content: space-between;background-color: white; border-radius: 10px;align-items: stretch"> display: flex;flex-direction: column; justify-content: space-between;background-color: white; border-radius: 10px;align-items: stretch">
<TendencyChart style="flex: 1;"></TendencyChart> <TendencyChart :enable="!project.completed" style="flex: 1;"></TendencyChart>
</div> </div>
</div> </div>
</div> </div>
@ -288,27 +288,6 @@ export default {
components: {EditProjectDialog, TendencyChart, EchartsBar}, components: {EditProjectDialog, TendencyChart, EchartsBar},
data() { data() {
return { return {
project: {
projectName: '',
projectAbbreviation: '',
projectClassId: '',
projectSubclassId: '',
projectImportance: '',
contractAmount: '',
expectedCompletion: '',
projectManMonth: '',
projectStartDate: Number,
projectOnlineDate: Number,
projectFirstTestDate: Number,
projectFinalTestDate: Number,
projectEndDate: Number,
financialCode: '',
projectDepartment: '',
projectArea: '',
projectCompany: '',
projectDescription: '',
completed: '',
},
completeNum: 0, completeNum: 0,
totalNum: 0, totalNum: 0,
@ -348,6 +327,27 @@ export default {
} }
}, },
props: { props: {
project: {
projectName: '',
projectAbbreviation: '',
projectClassId: '',
projectSubclassId: '',
projectImportance: '',
contractAmount: '',
expectedCompletion: '',
projectManMonth: '',
projectStartDate: Number,
projectOnlineDate: Number,
projectFirstTestDate: Number,
projectFinalTestDate: Number,
projectEndDate: Number,
financialCode: '',
projectDepartment: '',
projectArea: '',
projectCompany: '',
projectDescription: '',
completed: '',
},
projectAccessLevel: Number, projectAccessLevel: Number,
projectGroup: Array projectGroup: Array
}, },
@ -397,17 +397,17 @@ export default {
}, },
project: function (val) { project: function (val) {
},
},
created() {
this.getProjectInfo();
this.getProjectStats(); this.getProjectStats();
this.getProjectClass(); this.getProjectClass();
this.getannouncementList(); this.getannouncementList();
this.getTaskStats(); this.getTaskStats();
this.getselfTaskStats(); this.getselfTaskStats();
}, },
},
created() {
//this.getProjectInfo();
},
mounted() { mounted() {
const that = this const that = this
this.viewHeight = window.innerHeight - 150; this.viewHeight = window.innerHeight - 150;

View File

@ -52,7 +52,7 @@
<template #reference> <template #reference>
<el-button :style="{'visibility': ( projectAccessLevel < 3&&!mine)?'unset':'hidden'}" type="primary">新增工作项 <el-button :style="{'visibility': ( !project.completed&&projectAccessLevel < 3&&!mine)?'unset':'hidden'}" type="primary">新增工作项
</el-button> </el-button>
</template> </template>
</el-popover> </el-popover>
@ -157,7 +157,7 @@
<template #reference> <template #reference>
<el-button <el-button
:style="{'padding':'4px','margin-left': '5px','visibility': :style="{'padding':'4px','margin-left': '5px','visibility':
(scope.row.taskType!=='缺陷'&& (!project.completed&&scope.row.taskType!=='缺陷'&&
!statusDisabled(scope.row))? !statusDisabled(scope.row))?
'unset':'hidden'}" 'unset':'hidden'}"
text> text>
@ -350,6 +350,7 @@ import router from "../router";
export default { export default {
name: "ProjectWorkitem", name: "ProjectWorkitem",
props: { props: {
project: {completed: true},
projectAccessLevel: Number, projectAccessLevel: Number,
projectGroup: Array projectGroup: Array
}, },
@ -418,7 +419,7 @@ export default {
statusDisabled(row) { statusDisabled(row) {
return row.taskStatus === '已完成' || row.taskStatus === '关闭' || !(row.editable || return this.project.completed||row.taskStatus === '已完成' || row.taskStatus === '关闭' || !(row.editable ||
(this.$store.state.staff && row.taskHolderId === this.$store.state.staff.staffId)) (this.$store.state.staff && row.taskHolderId === this.$store.state.staff.staffId))
}, },
onRowClick(row, column, event) { onRowClick(row, column, event) {
@ -721,7 +722,7 @@ export default {
//console.log(response.data.records) //console.log(response.data.records)
that.workitems = response.data.data.records that.workitems = response.data.data.records
for (let workitem of that.workitems) { for (let workitem of that.workitems) {
workitem['editable'] = that.projectAccessLevel < 3 workitem['editable'] = !that.project.completed&& that.projectAccessLevel < 3
workitem['hasChildren'] = workitem.childrenCount !== 0 workitem['hasChildren'] = workitem.childrenCount !== 0
workitem['isRoot'] = true workitem['isRoot'] = true
//console.log(workitem) //console.log(workitem)
@ -745,7 +746,7 @@ export default {
let records = response.data.data.records let records = response.data.data.records
const editable = row.editable || row.taskHolderId === that.$store.state.staff.staffId const editable = !that.project.completed&&( row.editable || row.taskHolderId === that.$store.state.staff.staffId)
for (let workitem of records) { for (let workitem of records) {
workitem['editable'] = editable workitem['editable'] = editable
workitem['hasChildren'] = workitem.childrenCount !== 0 workitem['hasChildren'] = workitem.childrenCount !== 0
@ -770,7 +771,7 @@ export default {
}).then(response => { }).then(response => {
if (response.data.code === 200) { if (response.data.code === 200) {
let records = response.data.data.records let records = response.data.data.records
const editable = row.editable || row.taskHolderId === this.$store.state.staff.staffId const editable = !that.project.completed&&(row.editable || row.taskHolderId === this.$store.state.staff.staffId)
for (let workitem of records) { for (let workitem of records) {
workitem['editable'] = editable workitem['editable'] = editable
workitem['hasChildren'] = workitem.childrenCount !== 0 workitem['hasChildren'] = workitem.childrenCount !== 0