需求接口完善
This commit is contained in:
@@ -39,6 +39,16 @@ public class TestProjectController extends BaseController {
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询需求详情
|
||||
* @param qo
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/projectDetail")
|
||||
public AjaxResult projectDetail(@RequestBody IDQO qo) {
|
||||
return success(testProjectService.selectTestProjectById(qo.getId()));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增需求
|
||||
*/
|
||||
|
||||
@@ -26,5 +26,12 @@ public interface TestProjectMapper {
|
||||
* @return
|
||||
*/
|
||||
int deleteTestProjectById(Long id);
|
||||
|
||||
/**
|
||||
* 根据id查询需求详情
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
TestProject selectTestProjectById(Long id);
|
||||
}
|
||||
|
||||
|
||||
@@ -31,4 +31,11 @@ public interface ITestProjectService {
|
||||
* @return
|
||||
*/
|
||||
public int deleteTestProjectById(Long id);
|
||||
|
||||
/**
|
||||
* 查询需求详情
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
public TestProject selectTestProjectById(Long id);
|
||||
}
|
||||
|
||||
@@ -53,4 +53,14 @@ public class TestProjectServiceImpl implements ITestProjectService {
|
||||
return testProjectMapper.deleteTestProjectById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据id查询需求详情
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public TestProject selectTestProjectById(Long id) {
|
||||
return testProjectMapper.selectTestProjectById(id);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -4,6 +4,43 @@
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.test.test.mapper.TestProjectMapper">
|
||||
|
||||
<resultMap type="TestProject" id="TestProjectResult">
|
||||
<result property="id" column="id"/>
|
||||
<result property="serialNumber" column="serial_number"/>
|
||||
<result property="name" column="name"/>
|
||||
<result property="outline" column="outline"/>
|
||||
<result property="detail" column="detail"/>
|
||||
<result property="priority" column="priority"/>
|
||||
<result property="estimatedTime" column="estimated_time"/>
|
||||
<result property="source" column="source"/>
|
||||
<result property="type" column="type"/>
|
||||
<result property="status" column="status"/>
|
||||
<result property="manager" column="manager"/>
|
||||
<result property="createTime" column="create_time"/>
|
||||
<result property="updateTime" column="update_time"/>
|
||||
<result property="version" column="version"/>
|
||||
<result property="delFlag" column="del_flag"/>
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectTestProjectVo">
|
||||
SELECT id,
|
||||
serial_number,
|
||||
name,
|
||||
outline,
|
||||
detail,
|
||||
priority,
|
||||
estimated_time,
|
||||
source,
|
||||
type,
|
||||
status,
|
||||
manager,
|
||||
create_time,
|
||||
update_time,
|
||||
version,
|
||||
del_flag
|
||||
FROM test_project
|
||||
</sql>
|
||||
|
||||
<insert id="insertTestProject" parameterType="testProject" useGeneratedKeys="true" keyProperty="id">
|
||||
INSERT INTO test_project (
|
||||
<trim prefix="" suffix="" suffixOverrides=",">
|
||||
@@ -68,27 +105,32 @@
|
||||
tp.del_flag
|
||||
FROM test_project tp
|
||||
LEFT JOIN sys_user su ON su.user_id = tp.manager
|
||||
where 1=1
|
||||
<if test="serialNumber != null and serialNumber != ''">
|
||||
AND serial_number LIKE concat('%', #{serialNumber}, '%')
|
||||
</if>
|
||||
<if test="outline != null and outline != ''">
|
||||
AND outline LIKE concat('%', #{outline}, '%')
|
||||
</if>
|
||||
<if test="startCreateTime != null">
|
||||
AND DATE_FORMAT(IFNULL(tp.create_time,''),'%Y%m%d') <![CDATA[ >= ]]> DATE_FORMAT(#{startCreateTime},'%Y%m%d')
|
||||
</if>
|
||||
<if test="endCreateTime != null">
|
||||
AND DATE_FORMAT(IFNULL(tp.create_time,''),'%Y%m%d') <![CDATA[ <= ]]> DATE_FORMAT(#{endCreateTime},'%Y%m%d')
|
||||
</if>
|
||||
<if test="manager != null and manager != ''">
|
||||
AND manager = #{manager}
|
||||
</if>
|
||||
<if test="priority != null and priority != ''">
|
||||
AND priority = #{priority}
|
||||
</if>
|
||||
<if test="status !=null and status != ''">
|
||||
AND tp.status = #{status}
|
||||
</if>
|
||||
where 1=1
|
||||
<if test="serialNumber != null and serialNumber != ''">
|
||||
AND serial_number LIKE concat('%', #{serialNumber}, '%')
|
||||
</if>
|
||||
<if test="outline != null and outline != ''">
|
||||
AND outline LIKE concat('%', #{outline}, '%')
|
||||
</if>
|
||||
<if test="startCreateTime != null">
|
||||
AND DATE_FORMAT(IFNULL(tp.create_time,''),'%Y%m%d') <![CDATA[ >= ]]> DATE_FORMAT(#{startCreateTime},'%Y%m%d')
|
||||
</if>
|
||||
<if test="endCreateTime != null">
|
||||
AND DATE_FORMAT(IFNULL(tp.create_time,''),'%Y%m%d') <![CDATA[ <= ]]> DATE_FORMAT(#{endCreateTime},'%Y%m%d')
|
||||
</if>
|
||||
<if test="manager != null and manager != ''">
|
||||
AND manager = #{manager}
|
||||
</if>
|
||||
<if test="priority != null and priority != ''">
|
||||
AND priority = #{priority}
|
||||
</if>
|
||||
<if test="status !=null and status != ''">
|
||||
AND tp.status = #{status}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<select id="selectTestProjectById" parameterType="Long" resultMap="TestProjectResult">
|
||||
<include refid="selectTestProjectVo"/>
|
||||
WHERE id = #{id}
|
||||
</select>
|
||||
</mapper>
|
||||
@@ -4,7 +4,8 @@ const api = {
|
||||
managerList: 'system/user/list',
|
||||
projectList: 'test/project/projectList',
|
||||
addProject: 'test/project/addProject',
|
||||
delProject: 'test/project/delProject'
|
||||
delProject: 'test/project/delProject',
|
||||
getProjectDetail: 'test/project/projectDetail'
|
||||
}
|
||||
|
||||
export function managerList(data) {
|
||||
@@ -39,3 +40,12 @@ export function delProject(id) {
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
export function getProjectDetail(id) {
|
||||
return request({
|
||||
url: api.getProjectDetail,
|
||||
method: 'post',
|
||||
data: {id}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -83,7 +83,11 @@
|
||||
<el-table-column prop="serialNumber" label="ID" align="center"/>
|
||||
<el-table-column prop="version" label="版本" align="center"/>
|
||||
<el-table-column prop="outline" label="概要" align="center"/>
|
||||
<el-table-column prop="priority" label="优先级" align="center"/>
|
||||
<el-table-column prop="priority" label="优先级" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-tag :type="priorityColor[scope.row.priority]">{{ scope.row.priority }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="status" label="状态" align="center">
|
||||
<template #default="{ row }">
|
||||
<dict-tag :options="dict.type.status" :value="row.status"/>
|
||||
@@ -93,7 +97,9 @@
|
||||
<el-table-column prop="createTime" label="创建时间" align="center"/>
|
||||
<el-table-column label="操作" align="left" fixed="right">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" icon="el-icon-delete" @click.native.stop="handleDelete(scope.row.id)">删除</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleEdit(scope.row.id)">编辑</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-delete" @click.native.stop="handleDelete(scope.row.id)">删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-Table>
|
||||
@@ -171,17 +177,76 @@
|
||||
</el-container>
|
||||
</el-form>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="addOpen = false">取 消</el-button>
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
</span>
|
||||
<el-button @click="addOpen = false">取 消</el-button>
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog :title="title" :visible.sync="editOpen" width="90%">
|
||||
<el-form ref="editForm" :rules="rules" :model="editForm" label-width="110px" label-position="right">
|
||||
<el-container>
|
||||
<el-main>
|
||||
<el-form-item label="需求概要" prop="outline">
|
||||
<el-input v-model="editForm.outline" placeholder="请输入"></el-input>
|
||||
</el-form-item>
|
||||
<!-- 描述 -->
|
||||
<el-form-item label="描述" prop="detail">
|
||||
<el-input type="textarea" v-model="editForm.detail" :rows="22"></el-input>
|
||||
</el-form-item>
|
||||
</el-main>
|
||||
<el-aside width="450px" class="basic-information">
|
||||
<h3>基础信息</h3>
|
||||
<el-form-item label="需求名称" prop="name">
|
||||
<el-input v-model="editForm.name" placeholder="请输入"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="需求ID" prop="serialNumber">
|
||||
<el-input v-model="editForm.serialNumber" placeholder="请输入"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="负责人" prop="manager">
|
||||
<el-select v-model="editForm.manager" placeholder="请选择负责人" clearable>
|
||||
<SimpleOptions :options="managerList"/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="优先级" prop="priority">
|
||||
<el-select v-model="editForm.priority" placeholder="未设置" clearable filterable>
|
||||
<simple-options :options="dict.type.priority_level"/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="预期完成时间" prop="estimatedTime">
|
||||
<el-date-picker
|
||||
style="width: 100%"
|
||||
v-model="editForm.estimatedTime"
|
||||
type="date"
|
||||
placeholder="请选择预期完成时间"
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="需求来源" prop="source">
|
||||
<el-select v-model="editForm.source" placeholder="未设置" clearable>
|
||||
<simple-options :options="dict.type.project_source"/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="需求类型" prop="type">
|
||||
<el-select v-model="editForm.type" placeholder="未设置" clearable>
|
||||
<simple-options :options="dict.type.project_type"/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="版本" prop="version">
|
||||
<el-input v-model="editForm.version" placeholder="请输入版本"></el-input>
|
||||
</el-form-item>
|
||||
</el-aside>
|
||||
</el-container>
|
||||
</el-form>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="editOpen = false">取 消</el-button>
|
||||
<el-button type="primary" @click="editSubmitForm">确 定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {addProject, delProject, getProjectList, managerList} from "@/api/test/project";
|
||||
import {addProject, delProject, getProjectDetail, getProjectList, managerList} from "@/api/test/project";
|
||||
import SimpleOptions from "@/components/FormItem/option/SimpleOptions.vue";
|
||||
import {delCase} from "@/api/test/case";
|
||||
|
||||
export default {
|
||||
name: 'project',
|
||||
@@ -189,6 +254,13 @@ export default {
|
||||
dicts: ['priority_level', 'project_source', 'project_type', 'status'],
|
||||
data() {
|
||||
return {
|
||||
priorityColor: {
|
||||
P0: 'danger', // 红色
|
||||
P1: 'warning', // 黄色
|
||||
P2: 'info', // 蓝色
|
||||
P3: 'success', // 绿色
|
||||
p4: 'success'
|
||||
},
|
||||
statusCounts: {
|
||||
all: 0,
|
||||
notStarted: 0,
|
||||
@@ -214,11 +286,14 @@ export default {
|
||||
activeTab: 'all',
|
||||
total: 0,
|
||||
list: [],
|
||||
title: '',
|
||||
// 遮罩层
|
||||
loading: false,
|
||||
submitLoading: false,
|
||||
//新增弹窗
|
||||
addOpen: false,
|
||||
//编辑弹窗
|
||||
editOpen: false,
|
||||
managerList: [],
|
||||
queryParams: {
|
||||
serialNumber: '',
|
||||
@@ -241,7 +316,10 @@ export default {
|
||||
source: '',
|
||||
type: '',
|
||||
version: ''
|
||||
}
|
||||
},
|
||||
editForm: {
|
||||
|
||||
},
|
||||
};
|
||||
},
|
||||
created() {
|
||||
@@ -357,6 +435,16 @@ export default {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess("删除成功");
|
||||
});
|
||||
},
|
||||
handleEdit(id) {
|
||||
this.title = '编辑需求'
|
||||
getProjectDetail(id).then((res) => {
|
||||
this.editForm = res.data
|
||||
this.editOpen = true
|
||||
})
|
||||
},
|
||||
editSubmitForm() {
|
||||
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user