update code
parent
7f698ebff2
commit
fd73192afe
|
@ -70,7 +70,7 @@ public class SysDeptController extends BaseController
|
|||
/**
|
||||
* 根据部门编号获取详细信息
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:dept:query')")
|
||||
@PreAuthorize("@ss.hasAnyPermi('system:dept:query,project:subCompany:edit,project:project:edit')")
|
||||
@GetMapping(value = "/{deptId}")
|
||||
public AjaxResult getInfo(@PathVariable Long deptId)
|
||||
{
|
||||
|
@ -81,7 +81,7 @@ public class SysDeptController extends BaseController
|
|||
/**
|
||||
* 新增部门
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:dept:add')")
|
||||
@PreAuthorize("@ss.hasAnyPermi('system:dept:query,project:subCompany:edit,project:project:edit')")
|
||||
@Log(title = "部门管理", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public AjaxResult add(@Validated @RequestBody SysDept dept)
|
||||
|
@ -97,7 +97,7 @@ public class SysDeptController extends BaseController
|
|||
/**
|
||||
* 修改部门
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:dept:edit')")
|
||||
@PreAuthorize("@ss.hasAnyPermi('system:dept:query,project:subCompany:edit,project:project:edit')")
|
||||
@Log(title = "部门管理", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@Validated @RequestBody SysDept dept)
|
||||
|
|
|
@ -54,6 +54,16 @@ public class SysDept extends BaseEntity
|
|||
|
||||
private String unit;
|
||||
|
||||
public Integer getLevel() {
|
||||
return level;
|
||||
}
|
||||
|
||||
public void setLevel(Integer level) {
|
||||
this.level = level;
|
||||
}
|
||||
|
||||
private Integer level;
|
||||
|
||||
public String getUnit() {
|
||||
return unit;
|
||||
}
|
||||
|
|
|
@ -30,7 +30,7 @@ public class CompanyController extends BaseController {
|
|||
return success(depts);
|
||||
}
|
||||
|
||||
@PreAuthorize("@ss.hasAnyPermi('project:subCompany:list')")
|
||||
@PreAuthorize("@ss.hasAnyPermi('project:subCompany:list,project:project:list')")
|
||||
@PostMapping("/subList")
|
||||
public AjaxResult subList(@RequestBody SysDept where){
|
||||
where.setDelFlag("0");
|
||||
|
@ -41,6 +41,14 @@ public class CompanyController extends BaseController {
|
|||
@Log(title = "段队管理", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{deptId}")
|
||||
public AjaxResult remove(@PathVariable Long deptId) {
|
||||
SysDept where=new SysDept();
|
||||
where.setParentId(deptId);
|
||||
where.setLevel(300);
|
||||
where.setDelFlag("0");
|
||||
List<SysDept> list=deptService.selectDeptList(where);
|
||||
if(list.size()>0){
|
||||
return AjaxResult.error("段队下面有项目,不能删除!");
|
||||
}
|
||||
return toAjax(deptService.deleteDeepDeptById(deptId));
|
||||
}
|
||||
|
||||
|
@ -50,10 +58,20 @@ public class CompanyController extends BaseController {
|
|||
public AjaxResult addSubCompany(@RequestBody SysDept dept){
|
||||
if (!deptService.checkDeptNameUnique(dept))
|
||||
{
|
||||
return error("新增部门'" + dept.getDeptName() + "'失败,部门名称已存在");
|
||||
return error("新增部门'" + dept.getDeptName() + "'失败,段队名称已存在");
|
||||
}
|
||||
dept.setCreateBy(getUsername());
|
||||
return toAjax(deptService.insertSubCompany(dept));
|
||||
}
|
||||
|
||||
@PreAuthorize("@ss.hasAnyPermi('project:project:add')")
|
||||
@Log(title = "项目管理", businessType = BusinessType.INSERT)
|
||||
@PostMapping("/addSubProject")
|
||||
public AjaxResult addSubProject(@RequestBody SysDept dept){
|
||||
if (!deptService.checkDeptNameUnique(dept))
|
||||
{
|
||||
return error("新增部门'" + dept.getDeptName() + "'失败,项目名称已存在");
|
||||
}
|
||||
dept.setCreateBy(getUsername());
|
||||
return toAjax(deptService.inertSubProject(dept));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -137,5 +137,17 @@ public interface ISysDeptService
|
|||
*/
|
||||
public int deleteDeepDeptById(Long deptId);
|
||||
|
||||
/**
|
||||
* 增加段队
|
||||
* @param dept
|
||||
* @return
|
||||
*/
|
||||
public int insertSubCompany(SysDept dept);
|
||||
|
||||
/**
|
||||
* 增加项目
|
||||
* @param dept
|
||||
* @return
|
||||
*/
|
||||
public int inertSubProject(SysDept dept);
|
||||
}
|
||||
|
|
|
@ -227,9 +227,10 @@ public class SysDeptServiceImpl implements ISysDeptService
|
|||
// 如果父节点不为正常状态,则不允许新增子节点
|
||||
if (UserConstants.DEPT_DISABLE.equals(info.getStatus()))
|
||||
{
|
||||
throw new ServiceException("部门停用,不允许新增");
|
||||
throw new ServiceException("段位停用,不允许新增");
|
||||
}
|
||||
dept.setStatus("3");
|
||||
dept.setStatus("0");
|
||||
dept.setLevel(2);
|
||||
dept.setAncestors(info.getAncestors() + "," + dept.getParentId());
|
||||
int id=deptMapper.insertDept(dept);
|
||||
String[] subDepts="成本部,行政部,工程部".split(",");
|
||||
|
@ -243,11 +244,43 @@ public class SysDeptServiceImpl implements ISysDeptService
|
|||
dpt.setPhone(dept.getPhone());
|
||||
dpt.setEmail(dept.getPhone());
|
||||
dpt.setLeader(dept.getLeader());
|
||||
dpt.setStatus("4");
|
||||
dpt.setStatus("0");
|
||||
dpt.setLevel(3);
|
||||
deptMapper.insertDept(dpt);
|
||||
}
|
||||
return id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int inertSubProject(SysDept dept) {
|
||||
SysDept info = deptMapper.selectDeptById(dept.getParentId());
|
||||
// 如果父节点不为正常状态,则不允许新增子节点
|
||||
if (UserConstants.DEPT_DISABLE.equals(info.getStatus()))
|
||||
{
|
||||
throw new ServiceException("项目停用,不允许新增");
|
||||
}
|
||||
dept.setStatus("0");
|
||||
dept.setLevel(300);
|
||||
dept.setAncestors(info.getAncestors() + "," + dept.getParentId());
|
||||
int id=deptMapper.insertDept(dept);
|
||||
String[] subDepts="科技部,采购部,商务部,工程部,财务部".split(",");
|
||||
for(String it:subDepts){
|
||||
SysDept dpt=new SysDept();
|
||||
dpt.setParentId(dept.getDeptId());
|
||||
dpt.setAncestors(dept.getAncestors()+","+dpt.getParentId());
|
||||
dpt.setDeptName(it);
|
||||
dpt.setCreateBy(dept.getCreateBy());
|
||||
dpt.setCreateTime(new Date());
|
||||
dpt.setPhone(dept.getPhone());
|
||||
dpt.setEmail(dept.getPhone());
|
||||
dpt.setLeader(dept.getLeader());
|
||||
dpt.setStatus("0");
|
||||
dpt.setLevel(4);
|
||||
deptMapper.insertDept(dpt);
|
||||
}
|
||||
return id;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改保存部门信息
|
||||
*
|
||||
|
|
|
@ -21,10 +21,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<result property="updateBy" column="update_by" />
|
||||
<result property="updateTime" column="update_time" />
|
||||
<result property="unit" column="unit" />
|
||||
<result property="level" column="level"/>
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectDeptVo">
|
||||
select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status, d.del_flag, d.create_by, d.create_time,d.unit
|
||||
select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status, d.del_flag, d.create_by, d.create_time,d.unit,d.level
|
||||
from sys_dept d
|
||||
</sql>
|
||||
|
||||
|
@ -43,6 +44,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="status != null and status != ''">
|
||||
AND status = #{status}
|
||||
</if>
|
||||
<if test="level != null and level != ''">
|
||||
AND level = #{level}
|
||||
</if>
|
||||
<!-- 数据范围过滤 -->
|
||||
${params.dataScope}
|
||||
order by d.parent_id, d.order_num
|
||||
|
@ -101,6 +105,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="status != null">status,</if>
|
||||
<if test="createBy != null and createBy != ''">create_by,</if>
|
||||
<if test="unit != null and unit != ''">unit,</if>
|
||||
<if test="level != null and level != ''">level,</if>
|
||||
create_time
|
||||
)values(
|
||||
<if test="deptId != null and deptId != 0">#{deptId},</if>
|
||||
|
@ -114,6 +119,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="status != null">#{status},</if>
|
||||
<if test="createBy != null and createBy != ''">#{createBy},</if>
|
||||
<if test="unit != null and unit != ''">#{unit},</if>
|
||||
<if test="level != null and level != ''">#{level},</if>
|
||||
sysdate()
|
||||
)
|
||||
</insert>
|
||||
|
@ -131,6 +137,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="status != null and status != ''">status = #{status},</if>
|
||||
<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
|
||||
<if test="unit != null and unit != ''">unit = #{unit},</if>
|
||||
<if test="level != null and level != ''">level = #{level},</if>
|
||||
update_time = sysdate()
|
||||
</set>
|
||||
where dept_id = #{deptId}
|
||||
|
@ -161,6 +168,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
</delete>
|
||||
|
||||
<delete id="deleteDeepDeptById" parameterType="Long">
|
||||
update sys_dept set del_flag = '2' where ancestors like concat('%,', #{deptId}, ',%') or dept_id = #{deptId}
|
||||
update sys_dept set del_flag = '2' where parent_id =#{deptId} or dept_id = #{deptId}
|
||||
</delete>
|
||||
</mapper>
|
|
@ -26,10 +26,18 @@ export function companyList(data) {
|
|||
})
|
||||
}
|
||||
|
||||
export function addSubCompany(data){
|
||||
return request({
|
||||
url: '/project/company/addSubCompany',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
export function addSubCompany(data){
|
||||
return request({
|
||||
url: '/project/company/addSubCompany',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
export function addSubProject(data){
|
||||
return request({
|
||||
url: '/project/company/addSubProject',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
|
@ -145,6 +145,7 @@ export default {
|
|||
Cookies.remove('rememberMe');
|
||||
}
|
||||
this.$store.dispatch("Login", this.loginForm).then(() => {
|
||||
this.$store.state.tagsView.visitedViews.splice(1)
|
||||
this.$router.push({ path: this.redirect || "/" }).catch(()=>{});
|
||||
}).catch(() => {
|
||||
this.loading = false;
|
||||
|
|
|
@ -1,27 +1,13 @@
|
|||
<template>
|
||||
<div class="app-container project-company">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
|
||||
|
||||
<el-form-item label="所属公司" prop="parentId">
|
||||
<el-select v-model="queryParams.parentId" placeholder="请选择公司" @change="companyChange">
|
||||
<el-option v-for="it in companyOpts" :label="it.deptName" :key="it.deptId"
|
||||
:value="it.deptId" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<div class="prj-prj-index" style="padding:10px;">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
|
||||
<el-form-item label="项目名称" prop="deptName">
|
||||
<el-input v-model="queryParams.deptName" placeholder="请输入项目名称" clearable
|
||||
@keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="联系人" prop="leader">
|
||||
<el-input v-model="queryParams.leader" placeholder="请输入联系人" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="状态" prop="status">
|
||||
<el-select v-model="queryParams.status" placeholder="项目状态" clearable @change="handleQuery">
|
||||
<el-option v-for="dict in dict.type.sys_normal_disable" :key="dict.value" :label="dict.label"
|
||||
:value="dict.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
|
@ -31,12 +17,12 @@
|
|||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
|
||||
v-hasPermi="['system:dept:add']">新增</el-button>
|
||||
v-hasPermi="['project:project:add']">新增</el-button>
|
||||
</el-col>
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</el-row>
|
||||
|
||||
<el-table v-if="refreshTable" v-loading="loading" :data="projectList" row-key="deptId">
|
||||
<el-table v-if="refreshTable" v-loading="loading" :data="deptList" row-key="deptId">
|
||||
<el-table-column prop="deptName" label="项目名称" width="260"></el-table-column>
|
||||
<el-table-column prop="leader" label="联系人" width="260"></el-table-column>
|
||||
<el-table-column prop="phone" label="联系电话" width="260"></el-table-column>
|
||||
|
@ -53,24 +39,18 @@
|
|||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
|
||||
v-hasPermi="['system:dept:edit']">修改</el-button>
|
||||
<el-button v-if="scope.row.parentId != 0" size="mini" type="text" icon="el-icon-delete"
|
||||
@click="handleDelete(scope.row)" v-hasPermi="['system:dept:remove']">删除</el-button>
|
||||
v-hasPermi="['project:project:edit']">修改</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-delete"
|
||||
@click="handleDelete(scope.row)" v-hasPermi="['project:project:del']">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 添加或修改项目对话框 -->
|
||||
<!-- 添加或修改公司对话框 -->
|
||||
<el-dialog :title="title" :visible.sync="open" width="600px" append-to-body :close-on-click-modal="false"
|
||||
:close-on-press-escape="false">
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="所属公司" >
|
||||
<el-input v-model="company.deptName" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="项目名称" prop="deptName">
|
||||
|
@ -96,7 +76,7 @@
|
|||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="项目状态">
|
||||
<el-form-item label="项目 状态">
|
||||
<el-radio-group v-model="form.status">
|
||||
<el-radio v-for="dict in dict.type.sys_normal_disable" :key="dict.value"
|
||||
:label="dict.value">{{ dict.label }}</el-radio>
|
||||
|
@ -110,30 +90,29 @@
|
|||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
<script>
|
||||
import { getDept, delDept, addDept, updateDept } from "@/api/system/dept";
|
||||
import { companyList } from '@/api/project/company'
|
||||
import { projectList } from '@/api/project/project'
|
||||
import { listDept, getDept, delDept, addDept, updateDept, listDeptExcludeChild } from "@/api/system/dept";
|
||||
import { subList,deleteDept,addSubProject } from '@/api/project/company'
|
||||
import Treeselect from "@riophae/vue-treeselect";
|
||||
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
|
||||
|
||||
export default {
|
||||
name: "projectCompany",
|
||||
dicts: ['sys_normal_disable'],
|
||||
|
||||
dicts: ['sys_normal_disable'],
|
||||
components: { Treeselect },
|
||||
data() {
|
||||
return {
|
||||
company:{},
|
||||
companyOpts:[],
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 显示搜索条件
|
||||
showSearch: true,
|
||||
// 表格树数据
|
||||
projectList: [],
|
||||
// 项目树选项
|
||||
deptList: [],
|
||||
// 公司树选项
|
||||
deptOptions: [],
|
||||
// 弹出层标题
|
||||
title: "",
|
||||
|
@ -146,6 +125,7 @@ export default {
|
|||
deptName: '',
|
||||
status: '',
|
||||
leader: '',
|
||||
level:300
|
||||
},
|
||||
// 表单参数
|
||||
form: {},
|
||||
|
@ -169,28 +149,15 @@ export default {
|
|||
};
|
||||
},
|
||||
created() {
|
||||
companyList({}).then(response => {
|
||||
this.companyOpts=response.data;
|
||||
if(this.companyOpts.length>0){
|
||||
this.company=this.companyOpts[0];
|
||||
this.queryParams.parentId=this.company.deptId;
|
||||
this.getList();
|
||||
}
|
||||
});
|
||||
this.getList();
|
||||
this.queryParams.parentId=this.$store.state.user.dept.deptId
|
||||
this.getList();
|
||||
},
|
||||
methods: {
|
||||
companyChange(companyId){
|
||||
this.queryParams.parentId=companyId;
|
||||
let tmps=this.companyOpts.filter(d=>d.deptId==companyId);
|
||||
this.company=tmps.length>0? tmps[0]:{};
|
||||
this.handleQuery();
|
||||
},
|
||||
/** 查询项目列表 */
|
||||
getList() {
|
||||
this.loading = true;
|
||||
projectList(this.queryParams).then(response => {
|
||||
this.projectList = response.data;
|
||||
subList(this.queryParams).then(response => {
|
||||
this.deptList = response.data;
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
|
@ -214,7 +181,7 @@ export default {
|
|||
reset() {
|
||||
this.form = {
|
||||
deptId: undefined,
|
||||
parentId: this.queryParams.parentId,
|
||||
parentId: 100,
|
||||
deptName: undefined,
|
||||
orderNum: 100,
|
||||
leader: undefined,
|
||||
|
@ -236,27 +203,25 @@ export default {
|
|||
/** 新增按钮操作 */
|
||||
handleAdd(row) {
|
||||
this.reset();
|
||||
this.form.parentId = this.queryParams.parentId;
|
||||
this.form.parentId = 100;
|
||||
this.open = true;
|
||||
this.title = "添加项目";
|
||||
listDept().then(response => {
|
||||
this.deptOptions = this.handleTree(response.data, "deptId");
|
||||
});
|
||||
this.title = "添加项目";
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
this.reset();
|
||||
getDept(row.deptId).then(response => {
|
||||
this.form = response.data;
|
||||
this.form.parentId = this.queryParams.parentId;
|
||||
this.form.parentId = 100;
|
||||
this.open = true;
|
||||
this.title = "修改项目";
|
||||
this.title = "修改项目";
|
||||
});
|
||||
},
|
||||
/** 提交按钮 */
|
||||
submitForm: function () {
|
||||
this.$refs["form"].validate(valid => {
|
||||
if (valid) {
|
||||
this.form.parentId=this.$store.state.user.dept.deptId
|
||||
if (this.form.deptId != undefined) {
|
||||
updateDept(this.form).then(response => {
|
||||
this.$modal.msgSuccess("修改成功");
|
||||
|
@ -264,7 +229,7 @@ export default {
|
|||
this.getList();
|
||||
});
|
||||
} else {
|
||||
addDept(this.form).then(response => {
|
||||
addSubProject(this.form).then(response => {
|
||||
this.$modal.msgSuccess("新增成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
|
@ -276,7 +241,7 @@ export default {
|
|||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
this.$modal.confirm('是否确认删除名称为"' + row.deptName + '"的数据项?').then(function () {
|
||||
return delDept(row.deptId);
|
||||
return deleteDept(row.deptId);
|
||||
}).then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess("删除成功");
|
||||
|
@ -285,4 +250,9 @@ export default {
|
|||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
|
||||
<style lang="scss">
|
||||
.prj-prj-index{
|
||||
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,288 @@
|
|||
<template>
|
||||
<div class="app-container project-company">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
|
||||
|
||||
<el-form-item label="所属公司" prop="parentId">
|
||||
<el-select v-model="queryParams.parentId" placeholder="请选择公司" @change="companyChange">
|
||||
<el-option v-for="it in companyOpts" :label="it.deptName" :key="it.deptId"
|
||||
:value="it.deptId" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="项目名称" prop="deptName">
|
||||
<el-input v-model="queryParams.deptName" placeholder="请输入项目名称" clearable
|
||||
@keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="联系人" prop="leader">
|
||||
<el-input v-model="queryParams.leader" placeholder="请输入联系人" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="状态" prop="status">
|
||||
<el-select v-model="queryParams.status" placeholder="项目状态" clearable @change="handleQuery">
|
||||
<el-option v-for="dict in dict.type.sys_normal_disable" :key="dict.value" :label="dict.label"
|
||||
:value="dict.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
|
||||
v-hasPermi="['system:dept:add']">新增</el-button>
|
||||
</el-col>
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</el-row>
|
||||
|
||||
<el-table v-if="refreshTable" v-loading="loading" :data="projectList" row-key="deptId">
|
||||
<el-table-column prop="deptName" label="项目名称" width="260"></el-table-column>
|
||||
<el-table-column prop="leader" label="联系人" width="260"></el-table-column>
|
||||
<el-table-column prop="phone" label="联系电话" width="260"></el-table-column>
|
||||
<el-table-column prop="status" label="状态" width="100">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="创建时间" align="center" prop="createTime" width="200">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.createTime) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
|
||||
v-hasPermi="['system:dept:edit']">修改</el-button>
|
||||
<el-button v-if="scope.row.parentId != 0" size="mini" type="text" icon="el-icon-delete"
|
||||
@click="handleDelete(scope.row)" v-hasPermi="['system:dept:remove']">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 添加或修改项目对话框 -->
|
||||
<el-dialog :title="title" :visible.sync="open" width="600px" append-to-body :close-on-click-modal="false"
|
||||
:close-on-press-escape="false">
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="所属公司" >
|
||||
<el-input v-model="company.deptName" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="项目名称" prop="deptName">
|
||||
<el-input v-model="form.deptName" placeholder="请输入项目名称" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="负责人" prop="leader">
|
||||
<el-input v-model="form.leader" placeholder="请输入负责人" maxlength="20" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="联系电话" prop="phone">
|
||||
<el-input v-model="form.phone" placeholder="请输入联系电话" maxlength="11" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="项目状态">
|
||||
<el-radio-group v-model="form.status">
|
||||
<el-radio v-for="dict in dict.type.sys_normal_disable" :key="dict.value"
|
||||
:label="dict.value">{{ dict.label }}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getDept, delDept, addDept, updateDept } from "@/api/system/dept";
|
||||
import { companyList } from '@/api/project/company'
|
||||
import { projectList } from '@/api/project/project'
|
||||
import Treeselect from "@riophae/vue-treeselect";
|
||||
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
|
||||
export default {
|
||||
name: "projectCompany",
|
||||
dicts: ['sys_normal_disable'],
|
||||
components: { Treeselect },
|
||||
data() {
|
||||
return {
|
||||
company:{},
|
||||
companyOpts:[],
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 显示搜索条件
|
||||
showSearch: true,
|
||||
// 表格树数据
|
||||
projectList: [],
|
||||
// 项目树选项
|
||||
deptOptions: [],
|
||||
// 弹出层标题
|
||||
title: "",
|
||||
// 是否显示弹出层
|
||||
open: false,
|
||||
// 重新渲染表格状态
|
||||
refreshTable: true,
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
deptName: '',
|
||||
status: '',
|
||||
leader: '',
|
||||
},
|
||||
// 表单参数
|
||||
form: {},
|
||||
// 表单校验
|
||||
rules: {
|
||||
deptName: [
|
||||
{ required: true, message: "项目名称不能为空", trigger: "blur" }
|
||||
],
|
||||
leader: [
|
||||
{ required: true, message: "联系人不能为空", trigger: "blur" }
|
||||
],
|
||||
phone: [
|
||||
{
|
||||
required: true,
|
||||
pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
|
||||
message: "请输入正确的手机号码",
|
||||
trigger: "blur"
|
||||
}
|
||||
]
|
||||
}
|
||||
};
|
||||
},
|
||||
created() {
|
||||
companyList({}).then(response => {
|
||||
this.companyOpts=response.data;
|
||||
if(this.companyOpts.length>0){
|
||||
this.company=this.companyOpts[0];
|
||||
this.queryParams.parentId=this.company.deptId;
|
||||
this.getList();
|
||||
}
|
||||
});
|
||||
this.getList();
|
||||
},
|
||||
methods: {
|
||||
companyChange(companyId){
|
||||
this.queryParams.parentId=companyId;
|
||||
let tmps=this.companyOpts.filter(d=>d.deptId==companyId);
|
||||
this.company=tmps.length>0? tmps[0]:{};
|
||||
this.handleQuery();
|
||||
},
|
||||
/** 查询项目列表 */
|
||||
getList() {
|
||||
this.loading = true;
|
||||
projectList(this.queryParams).then(response => {
|
||||
this.projectList = response.data;
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
/** 转换项目数据结构 */
|
||||
normalizer(node) {
|
||||
if (node.children && !node.children.length) {
|
||||
delete node.children;
|
||||
}
|
||||
return {
|
||||
id: node.deptId,
|
||||
label: node.deptName,
|
||||
children: node.children
|
||||
};
|
||||
},
|
||||
// 取消按钮
|
||||
cancel() {
|
||||
this.open = false;
|
||||
this.reset();
|
||||
},
|
||||
// 表单重置
|
||||
reset() {
|
||||
this.form = {
|
||||
deptId: undefined,
|
||||
parentId: this.queryParams.parentId,
|
||||
deptName: undefined,
|
||||
orderNum: 100,
|
||||
leader: undefined,
|
||||
phone: undefined,
|
||||
email: '',
|
||||
status: "0"
|
||||
};
|
||||
this.resetForm("form");
|
||||
},
|
||||
/** 搜索按钮操作 */
|
||||
handleQuery() {
|
||||
this.getList();
|
||||
},
|
||||
/** 重置按钮操作 */
|
||||
resetQuery() {
|
||||
this.resetForm("queryForm");
|
||||
this.handleQuery();
|
||||
},
|
||||
/** 新增按钮操作 */
|
||||
handleAdd(row) {
|
||||
this.reset();
|
||||
this.form.parentId = this.queryParams.parentId;
|
||||
this.open = true;
|
||||
this.title = "添加项目";
|
||||
listDept().then(response => {
|
||||
this.deptOptions = this.handleTree(response.data, "deptId");
|
||||
});
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
this.reset();
|
||||
getDept(row.deptId).then(response => {
|
||||
this.form = response.data;
|
||||
this.form.parentId = this.queryParams.parentId;
|
||||
this.open = true;
|
||||
this.title = "修改项目";
|
||||
});
|
||||
},
|
||||
/** 提交按钮 */
|
||||
submitForm: function () {
|
||||
this.$refs["form"].validate(valid => {
|
||||
if (valid) {
|
||||
if (this.form.deptId != undefined) {
|
||||
updateDept(this.form).then(response => {
|
||||
this.$modal.msgSuccess("修改成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
} else {
|
||||
addDept(this.form).then(response => {
|
||||
this.$modal.msgSuccess("新增成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
this.$modal.confirm('是否确认删除名称为"' + row.deptName + '"的数据项?').then(function () {
|
||||
return delDept(row.deptId);
|
||||
}).then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess("删除成功");
|
||||
}).catch(() => { });
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
|
@ -125,6 +125,7 @@ export default {
|
|||
deptName: '',
|
||||
status: '',
|
||||
leader: '',
|
||||
level:2
|
||||
},
|
||||
// 表单参数
|
||||
form: {},
|
||||
|
@ -213,14 +214,7 @@ export default {
|
|||
this.form = response.data;
|
||||
this.form.parentId = 100;
|
||||
this.open = true;
|
||||
this.title = "修改段队";
|
||||
listDeptExcludeChild(row.deptId).then(response => {
|
||||
this.deptOptions = this.handleTree(response.data, "deptId");
|
||||
if (this.deptOptions.length == 0) {
|
||||
const noResultsOptions = { deptId: this.form.parentId, deptName: this.form.parentName, children: [] };
|
||||
this.deptOptions.push(noResultsOptions);
|
||||
}
|
||||
});
|
||||
this.title = "修改段队";
|
||||
});
|
||||
},
|
||||
/** 提交按钮 */
|
||||
|
|
|
@ -344,11 +344,23 @@ export default {
|
|||
setTimeout(()=>{
|
||||
this.form.deptId=undefined;
|
||||
},400);
|
||||
}else{
|
||||
if(a.data.status=='2'){//公司
|
||||
}else{
|
||||
if(a.data.level==1){//公司
|
||||
this.roleOptions=this.oldRoleOptions.filter(d=>{
|
||||
return d.roleName=="公司管理员"||d.roleName=="普通角色";
|
||||
})
|
||||
});
|
||||
}else if(a.data.level==2){//段队
|
||||
this.roleOptions=this.oldRoleOptions.filter(d=>{
|
||||
return d.roleName=="段队管理员"||d.roleName=="普通角色";
|
||||
});
|
||||
}else if(a.data.level==300){//项目
|
||||
this.roleOptions=this.oldRoleOptions.filter(d=>{
|
||||
return d.roleName=="项目管理员"||d.roleName=="普通角色";
|
||||
});
|
||||
}else{
|
||||
this.roleOptions=this.oldRoleOptions.filter(d=>{
|
||||
return d.roleName=="公司管理员"||d.roleName=="普通角色";
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue