|
@@ -305,40 +305,7 @@
|
|
@childValInput="childVal"
|
|
@childValInput="childVal"
|
|
@click.stop
|
|
@click.stop
|
|
/>
|
|
/>
|
|
- <el-dialog
|
|
|
|
- title="状态变更"
|
|
|
|
- :visible.sync="dialogStatusVisible"
|
|
|
|
- width="30%"
|
|
|
|
- class="public_task"
|
|
|
|
- >
|
|
|
|
- <div class="blueStripe" />
|
|
|
|
- <div align="center">
|
|
|
|
- <el-form ref="form_query" :inline="true" :model="form_query" :rules="rules" label-position="left" label-width="158px">
|
|
|
|
- <el-form-item v-if="statusName === 'BRD评审通过'" :label="statusName + '时间:'" prop="brdPassRealTime">
|
|
|
|
- <el-date-picker v-model="form_query.brdPassRealTime" type="date" placeholder="请选择" format="yyyy.MM.dd" value-format="yyyy.MM.dd" style="width: 100%;" />
|
|
|
|
- </el-form-item>
|
|
|
|
- <el-form-item v-if="statusName === 'PRD评审通过'" :label="statusName + '时间:'" prop="prdPassRealTime">
|
|
|
|
- <el-date-picker v-model="form_query.prdPassRealTime" type="date" size="large" :clearable="false" placeholder="请选择" format="yyyy.MM.dd" value-format="yyyy.MM.dd" style="width: 93%;" />
|
|
|
|
- </el-form-item><br>
|
|
|
|
- <el-form-item v-if="statusName === 'PRD评审通过'" label="开发Leader" prop="rdLeader">
|
|
|
|
- <search-people :value.sync="form_query.rdLeader" :size="'medium'" :clearable="false" :multiple="true" style="width: 100%;" />
|
|
|
|
- </el-form-item><br>
|
|
|
|
- <el-form-item v-if="statusName === 'PRD评审通过'" label="测试Leader" prop="qaLeader">
|
|
|
|
- <search-people :value.sync="form_query.qaLeader" :size="'medium'" :clearable="false" :multiple="true" style="width: 100%;" />
|
|
|
|
- </el-form-item>
|
|
|
|
- <el-form-item v-if="statusName === '技术准入'" :label="statusName + '时间:'" prop="techInRealTime">
|
|
|
|
- <el-date-picker v-model="form_query.techInRealTime" type="date" placeholder="请选择" format="yyyy.MM.dd" value-format="yyyy.MM.dd" style="width: 100%;" />
|
|
|
|
- </el-form-item>
|
|
|
|
- <el-form-item v-if="statusName === '已上线'" :label="statusName + '时间:'" prop="onlineRealTime">
|
|
|
|
- <el-date-picker v-model="form_query.onlineRealTime" type="date" placeholder="请选择" format="yyyy.MM.dd" value-format="yyyy.MM.dd" style="width: 100%;" />
|
|
|
|
- </el-form-item>
|
|
|
|
- </el-form>
|
|
|
|
- </div>
|
|
|
|
- <span slot="footer" class="dialog-footer">
|
|
|
|
- <el-button @click="dialogStatusVisible = false">取 消</el-button>
|
|
|
|
- <el-button type="primary" @click="setChangeArea(1)">确 定</el-button>
|
|
|
|
- </span>
|
|
|
|
- </el-dialog>
|
|
|
|
|
|
+ <timeStatist v-if="dialogStatusVisible" :visible.sync="dialogStatusVisible" :status="status_dialong" :personnel="from_data" @updata="init_status" />
|
|
</el-container>
|
|
</el-container>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
@@ -360,8 +327,6 @@ import {
|
|
unlockScheduleCheck,
|
|
unlockScheduleCheck,
|
|
scheduleGetRequireScheduleHistory,
|
|
scheduleGetRequireScheduleHistory,
|
|
scheduleGetHistoryRequireScheduleById
|
|
scheduleGetHistoryRequireScheduleById
|
|
- // scheduleGetHistoryScheduleById,
|
|
|
|
- // settingQueryBizRqmtOrntList
|
|
|
|
} from '@/api/requirement.js'
|
|
} from '@/api/requirement.js'
|
|
import { configShowTaskEnum } from '@/api/taskIndex'
|
|
import { configShowTaskEnum } from '@/api/taskIndex'
|
|
import textArea from '@/components/input/textArea'
|
|
import textArea from '@/components/input/textArea'
|
|
@@ -372,7 +337,6 @@ import image_url from '@/assets/home_images/home_u.png'
|
|
import createdBug from '@/views/projectManage/bugList/file/createdBug'
|
|
import createdBug from '@/views/projectManage/bugList/file/createdBug'
|
|
import tasksList from './components/taskList'
|
|
import tasksList from './components/taskList'
|
|
import dataStatistics from './components/dataStatistics'
|
|
import dataStatistics from './components/dataStatistics'
|
|
-import moment from 'moment'
|
|
|
|
import bugTableDialog from '@/views/projectManage/bugList/details/bugTableDialog' // 缺陷表格
|
|
import bugTableDialog from '@/views/projectManage/bugList/details/bugTableDialog' // 缺陷表格
|
|
import schedule from '@/views/projectManage/schedule' // 排期锁定弹窗
|
|
import schedule from '@/views/projectManage/schedule' // 排期锁定弹窗
|
|
import urgent from '@/assets/urgent.png'
|
|
import urgent from '@/assets/urgent.png'
|
|
@@ -383,7 +347,7 @@ import timeLine from '@/views/projectManage/components/timeLine.vue'
|
|
import BasicsCode from '@/views/projectManage/requirement/components/BasicsCode.vue'
|
|
import BasicsCode from '@/views/projectManage/requirement/components/BasicsCode.vue'
|
|
import workflowAndStatus from '@/views/projectManage/components/workflowAndStatus.vue'
|
|
import workflowAndStatus from '@/views/projectManage/components/workflowAndStatus.vue'
|
|
import ganntViews from './components/ganntViews'
|
|
import ganntViews from './components/ganntViews'
|
|
-import searchPeople from '@/components/select/searchPeople'
|
|
|
|
|
|
+import timeStatist from '@/views/projectManage/requirement/components/timeStatistics.vue'
|
|
import '@/styles/PublicStyle/index.scss'
|
|
import '@/styles/PublicStyle/index.scss'
|
|
export default {
|
|
export default {
|
|
components: {
|
|
components: {
|
|
@@ -403,7 +367,7 @@ export default {
|
|
ganntViews,
|
|
ganntViews,
|
|
BasicsCode,
|
|
BasicsCode,
|
|
workflowAndStatus,
|
|
workflowAndStatus,
|
|
- searchPeople
|
|
|
|
|
|
+ timeStatist
|
|
},
|
|
},
|
|
filters: {
|
|
filters: {
|
|
ellipsis(value, num) {
|
|
ellipsis(value, num) {
|
|
@@ -421,18 +385,9 @@ export default {
|
|
textarea2: '',
|
|
textarea2: '',
|
|
HoldTask: '',
|
|
HoldTask: '',
|
|
dialogVisible: false,
|
|
dialogVisible: false,
|
|
|
|
+ status_dialong: {}, // 切换状态
|
|
toilp: '',
|
|
toilp: '',
|
|
- rules: {
|
|
|
|
- brdPassRealTime: [{ required: true, message: '请输入BRD评审通过时间', trigger: 'change' }],
|
|
|
|
- prdPassRealTime: [{ required: true, message: '请输入PRD评审通过时间', trigger: 'change' }],
|
|
|
|
- qaLeader: [{ required: true, message: '请输入测试Leader', trigger: 'change' }],
|
|
|
|
- rdLeader: [{ required: true, message: '请输入开发Leader', trigger: 'change' }],
|
|
|
|
- techInRealTime: [{ required: true, message: '请输入技术准入时间', trigger: 'change' }],
|
|
|
|
- onlineRealTime: [{ required: true, message: '请输入实际上线时间', trigger: 'change' }]
|
|
|
|
- },
|
|
|
|
Latest: true,
|
|
Latest: true,
|
|
- statusName: '',
|
|
|
|
- statusValue: '',
|
|
|
|
dialogStatusVisible: false,
|
|
dialogStatusVisible: false,
|
|
brdPassRealTime: false, // BRD评审通过时间
|
|
brdPassRealTime: false, // BRD评审通过时间
|
|
prdPassRealTime: false, // PRD评审通过时间
|
|
prdPassRealTime: false, // PRD评审通过时间
|
|
@@ -450,6 +405,7 @@ export default {
|
|
// statusList: [], // 状态列表
|
|
// statusList: [], // 状态列表
|
|
taskScheduleEvent: [], // 排期类型列表
|
|
taskScheduleEvent: [], // 排期类型列表
|
|
form_query: { pm: null, rqmtOrntIds: [], qaLeader: [] },
|
|
form_query: { pm: null, rqmtOrntIds: [], qaLeader: [] },
|
|
|
|
+ from_data: {},
|
|
display: false, // 设置成员弹框
|
|
display: false, // 设置成员弹框
|
|
num: 0, // 成员数量
|
|
num: 0, // 成员数量
|
|
availableStatusList: [], // 状态
|
|
availableStatusList: [], // 状态
|
|
@@ -486,7 +442,6 @@ export default {
|
|
this.$nextTick(() => {
|
|
this.$nextTick(() => {
|
|
this.activeName = this.$route.query.page ? this.$route.query.page : '1'
|
|
this.activeName = this.$route.query.page ? this.$route.query.page : '1'
|
|
})
|
|
})
|
|
- // this.showRequirementEnum()
|
|
|
|
this.getRequirementById()
|
|
this.getRequirementById()
|
|
this.getCommentList()
|
|
this.getCommentList()
|
|
this.getTaskStatus()
|
|
this.getTaskStatus()
|
|
@@ -548,30 +503,9 @@ export default {
|
|
if (this.form_query.iterationId === '') {
|
|
if (this.form_query.iterationId === '') {
|
|
requirementInfo.iterationId = -1
|
|
requirementInfo.iterationId = -1
|
|
}
|
|
}
|
|
- requirementInfo.status = this.statusValue
|
|
|
|
- if (e === 1) {
|
|
|
|
- const data = {
|
|
|
|
- techInRealTime: this.form_query.techInRealTime,
|
|
|
|
- onlineRealTime: this.form_query.onlineRealTime,
|
|
|
|
- rdLeader: this.form_query.rdLeader.join(),
|
|
|
|
- qaLeader: this.form_query.qaLeader.join(),
|
|
|
|
- id: this.$route.query.id,
|
|
|
|
- status: this.statusValue,
|
|
|
|
- modifier: localStorage.getItem('username')
|
|
|
|
- }
|
|
|
|
- const res = await updateRequirementStatus(data)
|
|
|
|
- if (res.code === 200) {
|
|
|
|
- this.$refs.timeLine1.taskGetWorkFlow()
|
|
|
|
- this.$refs.record.operationLogTask()
|
|
|
|
- this.getRequirementById()
|
|
|
|
- this.dialogStatusVisible = false
|
|
|
|
- this.$message({ message: '修改成功', type: 'success', duration: 1000, offset: 150 })
|
|
|
|
- }
|
|
|
|
- return false
|
|
|
|
- }
|
|
|
|
|
|
+ requirementInfo.status = this.status_dialong.value
|
|
const res = await updateRequirement(requirementInfo)
|
|
const res = await updateRequirement(requirementInfo)
|
|
if (res.code === 200) {
|
|
if (res.code === 200) {
|
|
- this.dialogStatusVisible = false
|
|
|
|
this.getRequirementById()
|
|
this.getRequirementById()
|
|
this.$refs.timeLine1.taskGetWorkFlow()
|
|
this.$refs.timeLine1.taskGetWorkFlow()
|
|
this.$message({ message: '修改成功', type: 'success', duration: 1000, offset: 150 })
|
|
this.$message({ message: '修改成功', type: 'success', duration: 1000, offset: 150 })
|
|
@@ -597,7 +531,6 @@ export default {
|
|
const res = await requirementHold(this.requirementId, { 'remark': val })
|
|
const res = await requirementHold(this.requirementId, { 'remark': val })
|
|
if (res.code === 200) {
|
|
if (res.code === 200) {
|
|
this.getRequirementById()
|
|
this.getRequirementById()
|
|
- // this.showRequirementEnum()
|
|
|
|
this.$refs.timeLine1.taskGetWorkFlow()
|
|
this.$refs.timeLine1.taskGetWorkFlow()
|
|
this.visible = false
|
|
this.visible = false
|
|
this.$message({ message: '已修改状态为 Hold', type: 'success', duration: 1000, offset: 150 })
|
|
this.$message({ message: '已修改状态为 Hold', type: 'success', duration: 1000, offset: 150 })
|
|
@@ -607,7 +540,6 @@ export default {
|
|
const res = await requirementUnhold(this.requirementId)
|
|
const res = await requirementUnhold(this.requirementId)
|
|
if (res.code === 200) {
|
|
if (res.code === 200) {
|
|
this.getRequirementById()
|
|
this.getRequirementById()
|
|
- // this.showRequirementEnum()
|
|
|
|
this.$refs.timeLine1.taskGetWorkFlow()
|
|
this.$refs.timeLine1.taskGetWorkFlow()
|
|
this.$message({ message: 'Hold 状态已解除', type: 'success', duration: 1000, offset: 150 })
|
|
this.$message({ message: 'Hold 状态已解除', type: 'success', duration: 1000, offset: 150 })
|
|
}
|
|
}
|
|
@@ -619,10 +551,17 @@ export default {
|
|
this.taskScheduleEvent = res.data.taskScheduleEvent || []
|
|
this.taskScheduleEvent = res.data.taskScheduleEvent || []
|
|
}
|
|
}
|
|
},
|
|
},
|
|
|
|
+ init_status() { // updataStatus
|
|
|
|
+ this.dialogStatusVisible = false
|
|
|
|
+ this.$refs.timeLine1.taskGetWorkFlow()
|
|
|
|
+ this.$refs.record.operationLogTask()
|
|
|
|
+ this.getRequirementById()
|
|
|
|
+ },
|
|
async getRequirementById() { // 获取需求详情
|
|
async getRequirementById() { // 获取需求详情
|
|
const res = await getRequirementById({ id: this.$route.query.id })
|
|
const res = await getRequirementById({ id: this.$route.query.id })
|
|
if (res.code === 200) {
|
|
if (res.code === 200) {
|
|
this.form_query = res.data
|
|
this.form_query = res.data
|
|
|
|
+ this.from_data = _.cloneDeep(res.data)
|
|
if (this.form_query.rdLeader === null || this.form_query.rdLeader === '') {
|
|
if (this.form_query.rdLeader === null || this.form_query.rdLeader === '') {
|
|
this.$set(this.form_query, 'rdLeader', [])
|
|
this.$set(this.form_query, 'rdLeader', [])
|
|
} else {
|
|
} else {
|
|
@@ -712,32 +651,11 @@ export default {
|
|
},
|
|
},
|
|
async updateStatus(status) { // 修改状态
|
|
async updateStatus(status) { // 修改状态
|
|
if (status.label === 'PRD评审通过' || status.label === 'BRD评审通过' || status.label === '技术准入' || status.label === '已上线') {
|
|
if (status.label === 'PRD评审通过' || status.label === 'BRD评审通过' || status.label === '技术准入' || status.label === '已上线') {
|
|
- this.statusName = status.label
|
|
|
|
- this.statusValue = status.value
|
|
|
|
|
|
+ this.status_dialong = status
|
|
this.dialogStatusVisible = true
|
|
this.dialogStatusVisible = true
|
|
- // this.$nextTick(() => {
|
|
|
|
- // if (this.form_query.rdLeader === null || this.form_query.rdLeader === '') {
|
|
|
|
- // this.$set(this.form_query, 'rdLeader', [])
|
|
|
|
- // } else {
|
|
|
|
- // this.form_query.rdLeader = this.form_query.rdLeader.split(',')
|
|
|
|
- // }
|
|
|
|
- // if (this.form_query.qaLeader === null || this.form_query.qaLeader === '') {
|
|
|
|
- // this.$set(this.form_query, 'qaLeader', [])
|
|
|
|
- // } else {
|
|
|
|
- // this.form_query.qaLeader = this.form_query.qaLeader.split(',')
|
|
|
|
- // }
|
|
|
|
- // })
|
|
|
|
- status.label === 'BRD评审通过' ? this.form_query.brdPassRealTime = moment().locale('zh-cn').format('YYYY.MM.DD') : '' // BRD评审通过时间
|
|
|
|
- status.label === 'PRD评审通过' ? this.form_query.prdPassRealTime = moment().locale('zh-cn').format('YYYY.MM.DD') : '' // PRD评审通过时间
|
|
|
|
- status.label === '技术准入' ? this.form_query.techInRealTime = moment().locale('zh-cn').format('YYYY.MM.DD') : '' // 技术准入
|
|
|
|
- status.label === '已上线' ? this.form_query.onlineRealTime = moment().locale('zh-cn').format('YYYY.MM.DD') : '' // 实际上线
|
|
|
|
return false
|
|
return false
|
|
}
|
|
}
|
|
- const res = await updateRequirementStatus({
|
|
|
|
- id: this.$route.query.id,
|
|
|
|
- status: status.value,
|
|
|
|
- modifier: localStorage.getItem('username')
|
|
|
|
- })
|
|
|
|
|
|
+ const res = await updateRequirementStatus({ id: this.$route.query.id, status: status.value, modifier: localStorage.getItem('username') })
|
|
if (res.code === 200) {
|
|
if (res.code === 200) {
|
|
this.$refs.timeLine1.taskGetWorkFlow()
|
|
this.$refs.timeLine1.taskGetWorkFlow()
|
|
this.$refs.record.operationLogTask()
|
|
this.$refs.record.operationLogTask()
|