提交代码
parent
77fa7476d8
commit
cfa648dbe6
|
@ -5,6 +5,8 @@ import com.yanzhu.common.core.web.domain.BaseEntity;
|
|||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 项目信息对象 pro_project_info
|
||||
*
|
||||
|
@ -154,6 +156,9 @@ public class ProProjectInfo extends BaseEntity
|
|||
@Excel(name = "删除标识")
|
||||
private Long isDel;
|
||||
|
||||
private ProProjectInfoSetting setting;
|
||||
private List<ProProjectInfoDepts> projectDeptsList;
|
||||
|
||||
public void setId(Long id)
|
||||
{
|
||||
this.id = id;
|
||||
|
@ -226,15 +231,7 @@ public class ProProjectInfo extends BaseEntity
|
|||
{
|
||||
return projectType;
|
||||
}
|
||||
public void setprojectLevel(String projectLevel)
|
||||
{
|
||||
this.projectLevel = projectLevel;
|
||||
}
|
||||
|
||||
public String getprojectLevel()
|
||||
{
|
||||
return projectLevel;
|
||||
}
|
||||
public void setProjectRegional(String projectRegional)
|
||||
{
|
||||
this.projectRegional = projectRegional;
|
||||
|
@ -469,6 +466,30 @@ public class ProProjectInfo extends BaseEntity
|
|||
this.deptName = deptName;
|
||||
}
|
||||
|
||||
public String getProjectLevel() {
|
||||
return projectLevel;
|
||||
}
|
||||
|
||||
public void setProjectLevel(String projectLevel) {
|
||||
this.projectLevel = projectLevel;
|
||||
}
|
||||
|
||||
public ProProjectInfoSetting getSetting() {
|
||||
return setting;
|
||||
}
|
||||
|
||||
public void setSetting(ProProjectInfoSetting setting) {
|
||||
this.setting = setting;
|
||||
}
|
||||
|
||||
public List<ProProjectInfoDepts> getProjectDeptsList() {
|
||||
return projectDeptsList;
|
||||
}
|
||||
|
||||
public void setProjectDeptsList(List<ProProjectInfoDepts> projectDeptsList) {
|
||||
this.projectDeptsList = projectDeptsList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
||||
|
@ -480,7 +501,7 @@ public class ProProjectInfo extends BaseEntity
|
|||
.append("projectCode", getProjectCode())
|
||||
.append("simpleName", getSimpleName())
|
||||
.append("projectType", getProjectType())
|
||||
.append("projectLevel", getprojectLevel())
|
||||
.append("projectLevel", getProjectLevel())
|
||||
.append("projectRegional", getProjectRegional())
|
||||
.append("projectAddress", getProjectAddress())
|
||||
.append("projectNature", getProjectNature())
|
||||
|
|
|
@ -38,6 +38,14 @@ public class ProProjectInfoDepts extends BaseEntity
|
|||
@Excel(name = "参建单位编号")
|
||||
private String deptCode;
|
||||
|
||||
/** 负责人 */
|
||||
@Excel(name = "负责人")
|
||||
private String leader;
|
||||
|
||||
/** 联系电话 */
|
||||
@Excel(name = "联系电话")
|
||||
private String phone;
|
||||
|
||||
/** 删除标识 */
|
||||
@Excel(name = "删除标识")
|
||||
private Long isDel;
|
||||
|
@ -105,6 +113,22 @@ public class ProProjectInfoDepts extends BaseEntity
|
|||
this.projectName = projectName;
|
||||
}
|
||||
|
||||
public String getLeader() {
|
||||
return leader;
|
||||
}
|
||||
|
||||
public void setLeader(String leader) {
|
||||
this.leader = leader;
|
||||
}
|
||||
|
||||
public String getPhone() {
|
||||
return phone;
|
||||
}
|
||||
|
||||
public void setPhone(String phone) {
|
||||
this.phone = phone;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
||||
|
|
|
@ -11,6 +11,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<result property="deptType" column="dept_type" />
|
||||
<result property="deptName" column="dept_name" />
|
||||
<result property="deptCode" column="dept_code" />
|
||||
<result property="leader" column="leader" />
|
||||
<result property="phone" column="phone" />
|
||||
<result property="isDel" column="is_del" />
|
||||
<result property="createBy" column="create_by" />
|
||||
<result property="createTime" column="create_time" />
|
||||
|
@ -20,7 +22,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
</resultMap>
|
||||
|
||||
<sql id="selectProProjectInfoDeptsVo">
|
||||
select pd.id, pd.project_id, pi.project_name, pd.dept_type, pd.dept_name, pd.dept_code, pd.is_del, pd.create_by, pd.create_time, pd.update_by, pd.update_time, pd.remark from pro_project_info_depts pd
|
||||
select pd.id, pd.project_id, pi.project_name, pd.dept_type, pd.dept_name, pd.dept_code, leader, phone, pd.is_del, pd.create_by, pd.create_time, pd.update_by, pd.update_time, pd.remark from pro_project_info_depts pd
|
||||
left join pro_project_info pi on pi.id = pd.project_id
|
||||
left join sys_dept sd on sd.dept_id = pi.dept_id
|
||||
</sql>
|
||||
|
@ -50,6 +52,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="deptType != null">dept_type,</if>
|
||||
<if test="deptName != null">dept_name,</if>
|
||||
<if test="deptCode != null">dept_code,</if>
|
||||
<if test="leader != null">leader,</if>
|
||||
<if test="phone != null">phone,</if>
|
||||
<if test="isDel != null">is_del,</if>
|
||||
<if test="createBy != null">create_by,</if>
|
||||
<if test="createTime != null">create_time,</if>
|
||||
|
@ -62,6 +66,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="deptType != null">#{deptType},</if>
|
||||
<if test="deptName != null">#{deptName},</if>
|
||||
<if test="deptCode != null">#{deptCode},</if>
|
||||
<if test="leader != null">#{leader},</if>
|
||||
<if test="phone != null">#{phone},</if>
|
||||
<if test="isDel != null">#{isDel},</if>
|
||||
<if test="createBy != null">#{createBy},</if>
|
||||
<if test="createTime != null">#{createTime},</if>
|
||||
|
@ -78,6 +84,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="deptType != null">dept_type = #{deptType},</if>
|
||||
<if test="deptName != null">dept_name = #{deptName},</if>
|
||||
<if test="deptCode != null">dept_code = #{deptCode},</if>
|
||||
<if test="leader != null">leader = #{leader},</if>
|
||||
<if test="phone != null">phone = #{phone},</if>
|
||||
<if test="isDel != null">is_del = #{isDel},</if>
|
||||
<if test="createBy != null">create_by = #{createBy},</if>
|
||||
<if test="createTime != null">create_time = #{createTime},</if>
|
||||
|
|
|
@ -69,7 +69,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="projectStatus != null and projectStatus != ''"> and pi.project_status = #{projectStatus}</if>
|
||||
<if test="isDel != null "> and pi.is_del = #{isDel}</if>
|
||||
</where>
|
||||
order by id project_sort, id desc
|
||||
order by pi.project_sort, pi.id desc
|
||||
</select>
|
||||
|
||||
<select id="selectProProjectInfoById" parameterType="Long" resultMap="ProProjectInfoResult">
|
||||
|
@ -206,14 +206,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
where id = #{id}
|
||||
</update>
|
||||
|
||||
<delete id="deleteProProjectInfoById" parameterType="Long">
|
||||
delete from pro_project_info where id = #{id}
|
||||
</delete>
|
||||
<update id="deleteProProjectInfoById" parameterType="Long">
|
||||
update pro_project_info set is_del=1 where id = #{id}
|
||||
</update>
|
||||
|
||||
<delete id="deleteProProjectInfoByIds" parameterType="String">
|
||||
delete from pro_project_info where id in
|
||||
<update id="deleteProProjectInfoByIds" parameterType="String">
|
||||
update pro_project_info set is_del=1 where id in
|
||||
<foreach item="id" collection="array" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</delete>
|
||||
</update>
|
||||
|
||||
</mapper>
|
|
@ -1,6 +1,12 @@
|
|||
package com.yanzhu.system.controller;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import com.yanzhu.common.core.constant.CacheConstants;
|
||||
import com.yanzhu.common.core.constant.Constants;
|
||||
import com.yanzhu.common.core.enums.IsDelEnums;
|
||||
import com.yanzhu.common.redis.service.RedisService;
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
@ -32,6 +38,9 @@ import com.yanzhu.system.service.ISysDeptService;
|
|||
@RequestMapping("/dept")
|
||||
public class SysDeptController extends BaseController
|
||||
{
|
||||
@Autowired
|
||||
private RedisService redisService;
|
||||
|
||||
@Autowired
|
||||
private ISysDeptService deptService;
|
||||
|
||||
|
@ -130,4 +139,24 @@ public class SysDeptController extends BaseController
|
|||
deptService.checkDeptDataScope(deptId);
|
||||
return toAjax(deptService.deleteDeptById(deptId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取部门列表
|
||||
*/
|
||||
@RequiresPermissions("system:dept:project")
|
||||
@GetMapping("/projectDeptList")
|
||||
public AjaxResult list()
|
||||
{
|
||||
String key = "projectDeptList_0";
|
||||
Object cache = redisService.getCacheObject(key);
|
||||
if(cache!=null){
|
||||
return success(cache);
|
||||
}
|
||||
SysDept query = new SysDept();
|
||||
query.setDelFlag(IsDelEnums.NO.getInfo());
|
||||
query.setDeptType("3");// 项目单位
|
||||
List<SysDept> depts = deptService.selectDeptList(query);
|
||||
redisService.setCacheObject(key,depts, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
|
||||
return success(depts);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.yanzhu.system.controller;
|
||||
|
||||
import com.yanzhu.common.core.constant.Constants;
|
||||
import com.yanzhu.common.core.domain.R;
|
||||
import com.yanzhu.common.core.utils.poi.ExcelUtil;
|
||||
import com.yanzhu.common.core.web.controller.BaseController;
|
||||
|
@ -7,6 +8,7 @@ import com.yanzhu.common.core.web.domain.AjaxResult;
|
|||
import com.yanzhu.common.core.web.page.TableDataInfo;
|
||||
import com.yanzhu.common.log.annotation.Log;
|
||||
import com.yanzhu.common.log.enums.BusinessType;
|
||||
import com.yanzhu.common.redis.service.RedisService;
|
||||
import com.yanzhu.common.security.annotation.InnerAuth;
|
||||
import com.yanzhu.common.security.annotation.RequiresPermissions;
|
||||
import com.yanzhu.common.security.utils.SecurityUtils;
|
||||
|
@ -14,6 +16,7 @@ import com.yanzhu.system.api.domain.SysDept;
|
|||
import com.yanzhu.system.api.domain.SysRole;
|
||||
import com.yanzhu.system.api.domain.SysUser;
|
||||
import com.yanzhu.system.domain.SysUserRole;
|
||||
import com.yanzhu.system.domain.vo.TreeSelect;
|
||||
import com.yanzhu.system.service.ISysDeptService;
|
||||
import com.yanzhu.system.service.ISysRoleService;
|
||||
import com.yanzhu.system.service.ISysUserService;
|
||||
|
@ -24,6 +27,7 @@ import org.springframework.web.bind.annotation.*;
|
|||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* 角色信息
|
||||
|
@ -34,6 +38,9 @@ import java.util.List;
|
|||
@RequestMapping("/role")
|
||||
public class SysRoleController extends BaseController
|
||||
{
|
||||
@Autowired
|
||||
private RedisService redisService;
|
||||
|
||||
@Autowired
|
||||
private ISysRoleService roleService;
|
||||
|
||||
|
@ -241,7 +248,15 @@ public class SysRoleController extends BaseController
|
|||
{
|
||||
AjaxResult ajax = AjaxResult.success();
|
||||
ajax.put("checkedKeys", deptService.selectDeptListByRoleId(roleId));
|
||||
ajax.put("depts", deptService.selectDeptTreeList(new SysDept()));
|
||||
String key = "role.deptTree_"+SecurityUtils.getUserId();
|
||||
List<TreeSelect> treeList = redisService.getCacheObject(key);
|
||||
if(treeList!=null){
|
||||
ajax.put("depts", treeList);
|
||||
}else{
|
||||
treeList = deptService.selectDeptTreeList(new SysDept());
|
||||
redisService.setCacheObject(key,treeList, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
|
||||
ajax.put("depts", treeList);
|
||||
}
|
||||
return ajax;
|
||||
}
|
||||
|
||||
|
|
|
@ -4,9 +4,13 @@ import java.io.IOException;
|
|||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import com.yanzhu.common.core.constant.Constants;
|
||||
import com.yanzhu.common.redis.service.RedisService;
|
||||
import com.yanzhu.system.domain.vo.TreeSelect;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
@ -51,6 +55,9 @@ import com.yanzhu.system.service.ISysUserService;
|
|||
@RequestMapping("/user")
|
||||
public class SysUserController extends BaseController
|
||||
{
|
||||
@Autowired
|
||||
private RedisService redisService;
|
||||
|
||||
@Autowired
|
||||
private ISysUserService userService;
|
||||
|
||||
|
@ -346,7 +353,14 @@ public class SysUserController extends BaseController
|
|||
@GetMapping("/deptTree")
|
||||
public AjaxResult deptTree(SysDept dept)
|
||||
{
|
||||
return success(deptService.selectDeptTreeList(dept));
|
||||
String key = "user.deptTree_"+SecurityUtils.getUserId();
|
||||
Object cache = redisService.getCacheObject(key);
|
||||
if(cache!=null){
|
||||
return success(cache);
|
||||
}
|
||||
List<TreeSelect> treeList = deptService.selectDeptTreeList(dept);
|
||||
redisService.setCacheObject(key,treeList, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
|
||||
return success(treeList);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "指定流程办理人员列表")
|
||||
|
|
|
@ -8,6 +8,8 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
|
||||
<link rel="icon" href="/favicon.ico">
|
||||
<title>若依管理系统</title>
|
||||
<script type="text/javascript"
|
||||
src="https://api.map.baidu.com/api?v=1.0&&type=webgl&ak=6zAD8CIavtzWnkGg0a7roush5maGMIPn"></script>
|
||||
<!--[if lt IE 11]><script>window.location.href='/html/ie.html';</script><![endif]-->
|
||||
<style>
|
||||
html,
|
||||
|
|
|
@ -50,3 +50,11 @@ export function delDept(deptId) {
|
|||
method: 'delete'
|
||||
})
|
||||
}
|
||||
|
||||
// 项目单位列表
|
||||
export function projectDeptList() {
|
||||
return request({
|
||||
url: '/system/dept/projectDeptList',
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
|
|
@ -0,0 +1,157 @@
|
|||
<template>
|
||||
<el-dialog :title="title" v-model="show" width="800px" append-to-body custom-class="baidu-map-dialog"
|
||||
:close-on-click-modal="false" :close-on-press-escape="false" >
|
||||
<div class="div-info">
|
||||
<div>经度纬度:{{point?(point.lng.toFixed(5)+","+point.lat.toFixed(5)):'' }}</div>
|
||||
<div>详细地址:{{ getAddress() }}</div>
|
||||
<div style="margin-top: 10px;text-align: center;" v-if="getAddress()">
|
||||
<el-button size="small" type="primary" @click="doOk">确定</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<div id="index-map" style="width: 100%;height:600px;"></div>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
const show = ref(false);
|
||||
const title = ref("");
|
||||
const map = ref("");
|
||||
const point = ref("");
|
||||
const cityInfo = ref("");
|
||||
|
||||
const emit = defineEmits(["docom"]);
|
||||
|
||||
function getCity(data,cb){
|
||||
let myPoint = new BMapGL.Point(+data.longitude,+data.latitude);
|
||||
let myGeo = new BMapGL.Geocoder({extensions_town: true});
|
||||
myGeo.getLocation(myPoint,r=>{
|
||||
let cityInfo={
|
||||
address:r.content?.address||'',
|
||||
poi_desc:r.content?.poi_desc||'',
|
||||
district:r.content?.address_detail?.district||'',
|
||||
city:r.content?.address_detail?.city||'',
|
||||
province:r.content?.address_detail?.province||''
|
||||
}
|
||||
cb && cb(myPoint,cityInfo);
|
||||
});
|
||||
}
|
||||
|
||||
function doOk(){
|
||||
emit("docom",point.value,cityInfo.value);
|
||||
show.value=false;
|
||||
}
|
||||
|
||||
function getAddress(){
|
||||
let addr=cityInfo.value?.address||'';
|
||||
let poi_desc=cityInfo.value?.poi_desc||'';
|
||||
return addr+poi_desc;
|
||||
}
|
||||
|
||||
function showDlg(opt){
|
||||
title.value=opt?.title||'选择地址';
|
||||
show.value=true;
|
||||
setTimeout(()=>{
|
||||
initMap();
|
||||
},400);
|
||||
}
|
||||
|
||||
function currentPoint(){
|
||||
let geolocation = new BMapGL.Geolocation();
|
||||
geolocation.enableSDKLocation();
|
||||
geolocation.getCurrentPosition(e=>{
|
||||
if(e.point){
|
||||
let point = e.point
|
||||
let initMarker = new BMapGL.Marker(point);
|
||||
map.value.centerAndZoom(point, 18);
|
||||
map.value.addOverlay(initMarker);
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
function mapClick(e){
|
||||
point.value=e.latlng;
|
||||
let myGeo = new BMapGL.Geocoder({extensions_town: true});
|
||||
myGeo.getLocation(e.latlng,r=>{
|
||||
if(r){
|
||||
cityInfo.value={
|
||||
address:r.content?.address||'',
|
||||
poi_desc:r.content?.poi_desc||'',
|
||||
district:r.content?.address_detail?.district||'',
|
||||
city:r.content?.address_detail?.city||'',
|
||||
province:r.content?.address_detail?.province||''
|
||||
}
|
||||
}else{
|
||||
cityInfo.value={}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function initMap() {
|
||||
let imap = new BMapGL.Map("index-map");
|
||||
|
||||
map.value = imap;
|
||||
let point = new BMapGL.Point(116.404, 39.915);
|
||||
//初始化地图,设置中心点坐标和地图级别
|
||||
map.value.centerAndZoom(point, 15);
|
||||
map.value.setDefaultCursor("crosshair");//设置地图默认的鼠标指针样式
|
||||
map.value.enableScrollWheelZoom();//启用滚轮放大缩小,默认禁用。
|
||||
|
||||
//创建点坐标
|
||||
|
||||
//创建标注
|
||||
let initMarker = new BMapGL.Marker(point);
|
||||
//向地图中添加单个覆盖物时会触发此事件
|
||||
map.value.addOverlay(initMarker);
|
||||
//开启标注拖拽功能
|
||||
//initMarker.enableDragging();
|
||||
//将标注点移动到中心位置
|
||||
|
||||
|
||||
//添加地图默认控件
|
||||
map.value.addControl(new BMapGL.NavigationControl());
|
||||
//开启鼠标滚轮缩放
|
||||
map.value.addEventListener("click",mapClick);
|
||||
var myGeo = new BMapGL.Geocoder();
|
||||
// 将地址解析结果显示在地图上,并调整地图视野
|
||||
myGeo.getPoint('经河新城', function (point) {
|
||||
if (point) {
|
||||
console.log("--->",point)
|
||||
map.value.centerAndZoom(point, 16);
|
||||
map.value.addOverlay(new BMapGL.Marker(point, { title: '经河新城' }))
|
||||
map.value.enableScrollWheelZoom(true);
|
||||
//map.value.setHeading(64.5); //设置地图旋转角度
|
||||
//map.value.setTilt(73); //设置地图的倾斜角度
|
||||
} else {
|
||||
alert('您选择的地址没有解析到结果!');
|
||||
}
|
||||
}, '陕西省')
|
||||
currentPoint();
|
||||
}
|
||||
|
||||
/** 暴露组件 */
|
||||
defineExpose({
|
||||
showDlg,
|
||||
});
|
||||
</script>
|
||||
<style lang="scss" >
|
||||
.baidu-map-dialog{
|
||||
.el-dialog__body{
|
||||
position: relative;
|
||||
padding: 0px;
|
||||
.div-info{
|
||||
position: absolute;
|
||||
top:0px;
|
||||
right: 10px;
|
||||
width:300px;
|
||||
font-size: 12px;
|
||||
background: rgba(255,255,255,0.5);
|
||||
box-shadow: 6px 6px 6px rgba(0,0,0,0.2);
|
||||
z-index: 99999;
|
||||
padding: 8px;
|
||||
border:solid 1px #ccc;
|
||||
color: #51b5ff;
|
||||
line-height: 24px;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -1,30 +1,6 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
|
||||
<el-form-item label="所属单位" prop="deptId" v-hasPermi="['manage:dept:project']">
|
||||
<el-input
|
||||
v-model="queryParams.deptId"
|
||||
placeholder="请输入所属单位"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="部门主键" prop="visDeptId">
|
||||
<el-input
|
||||
v-model="queryParams.visDeptId"
|
||||
placeholder="请输入部门主键"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="显示部门" prop="disDeptId">
|
||||
<el-input
|
||||
v-model="queryParams.disDeptId"
|
||||
placeholder="请输入显示部门"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="项目名称" prop="projectName">
|
||||
<el-input
|
||||
v-model="queryParams.projectName"
|
||||
|
@ -33,54 +9,14 @@
|
|||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="项目编号" prop="projectCode">
|
||||
<el-input
|
||||
v-model="queryParams.projectCode"
|
||||
placeholder="请输入项目编号"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="项目简称" prop="simpleName">
|
||||
<el-input
|
||||
v-model="queryParams.simpleName"
|
||||
placeholder="请输入项目简称"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="项目等级" prop="projectLevel">
|
||||
<el-input
|
||||
v-model="queryParams.projectLevel"
|
||||
placeholder="请输入项目等级"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="项目负责人" prop="projectPerson">
|
||||
<el-input
|
||||
v-model="queryParams.projectPerson"
|
||||
placeholder="请输入项目负责人"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="负责人电话" prop="projectPersonPhone">
|
||||
<el-input
|
||||
v-model="queryParams.projectPersonPhone"
|
||||
placeholder="请输入负责人电话"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="删除标识" prop="isDel">
|
||||
<el-select v-model="queryParams.isDel" placeholder="请选择删除标识" clearable>
|
||||
<el-form-item label="项目类型" prop="projectType">
|
||||
<el-select v-model="queryParams.projectType" placeholder="请选择项目类型" clearable>
|
||||
<el-option
|
||||
v-for="dict in sys_is_del"
|
||||
v-for="dict in pro_project_type"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
|
@ -133,50 +69,69 @@
|
|||
|
||||
<el-table v-loading="loading" :data="proProjectInfoList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="主键" align="center" prop="id" />
|
||||
<el-table-column label="所属单位" align="center" prop="deptId" />
|
||||
<el-table-column label="部门主键" align="center" prop="visDeptId" />
|
||||
<el-table-column label="显示部门" align="center" prop="disDeptId" />
|
||||
<el-table-column label="项目名称" align="center" prop="projectName" />
|
||||
<el-table-column label="项目编号" align="center" prop="projectCode" />
|
||||
<el-table-column label="项目名称" align="center" prop="projectName" width="250"/>
|
||||
<el-table-column label="项目部门" align="center" prop="deptName" width="200"/>
|
||||
<el-table-column label="项目简称" align="center" prop="simpleName" />
|
||||
<el-table-column label="项目类型" align="center" prop="projectType" />
|
||||
<el-table-column label="项目等级" align="center" prop="projectLevel" />
|
||||
<el-table-column label="项目区县" align="center" prop="projectRegional" />
|
||||
<el-table-column label="项目地址" align="center" prop="projectAddress" />
|
||||
<el-table-column label="项目建设属性" align="center" prop="projectNature" />
|
||||
<el-table-column label="许可证号" align="center" prop="licenceNumber" />
|
||||
<el-table-column label="项目负责人" align="center" prop="projectPerson" />
|
||||
<el-table-column label="负责人电话" align="center" prop="projectPersonPhone" />
|
||||
<el-table-column label="经度" align="center" prop="longitude" />
|
||||
<el-table-column label="纬度" align="center" prop="latitude" />
|
||||
<el-table-column label="项目工期" align="center" prop="projectTimeLimit" />
|
||||
<el-table-column label="总投资" align="center" prop="totalInvestment" />
|
||||
<el-table-column label="建筑面积" align="center" prop="floorArea" />
|
||||
<el-table-column label="开累产值" align="center" prop="totalOutputValue" />
|
||||
<el-table-column label="计划完工时间" align="center" prop="plannedCompletionTime" />
|
||||
<el-table-column label="计划开始时间" align="center" prop="scheduledStartTime" />
|
||||
<el-table-column label="实际开始时间" align="center" prop="actualOperatingTime" />
|
||||
<el-table-column label="实际完工时间" align="center" prop="actualCompletionTime" />
|
||||
<el-table-column label="合同总金额" align="center" prop="contractAmount" />
|
||||
<el-table-column label="已支付金额" align="center" prop="paidAmount" />
|
||||
<el-table-column label="挂账金额" align="center" prop="onAccountAmount" />
|
||||
<el-table-column label="项目类型" align="center" prop="projectType" width="100">
|
||||
<template #default="scope">
|
||||
<dict-tag :options="pro_project_type" :value="scope.row.projectType"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="二维码" align="center" prop="projectQrCode" width="80">
|
||||
<template #default="scope">
|
||||
<image-preview :src="scope.row.projectQrCode" :width="50" :height="50"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="项目排序" align="center" prop="projectSort" width="120">
|
||||
<template #default="scope">
|
||||
<el-input-number size="mini" v-model="scope.row.projectSort" :min="1" :max="999"
|
||||
@change="setProjectSort(scope.row, $event)"></el-input-number>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="项目地址" align="center" prop="projectAddress" width="250"/>
|
||||
<el-table-column label="负责人" align="center" prop="projectPerson" width="100"/>
|
||||
<el-table-column label="负责人电话" align="center" prop="projectPersonPhone" width="120"/>
|
||||
<el-table-column label="项目工期" align="center" prop="projectTimeLimit" width="120">
|
||||
<template #default="scope">
|
||||
<el-tag effect="plain">
|
||||
{{ scope.row.projectTimeLimit + ' 天' }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="总投资" align="center" prop="totalInvestment" >
|
||||
<template #default="scope">
|
||||
<el-tag effect="dark">
|
||||
{{ scope.row.totalInvestment + ' 万元' }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="合同金额" align="center" prop="contractAmount" >
|
||||
<template #default="scope">
|
||||
<el-tag effect="dark">
|
||||
{{ scope.row.contractAmount + ' 万元' }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="项目进度" align="center" prop="projectSchedule">
|
||||
<template #default="scope">
|
||||
<dict-tag :options="pro_project_schedule" :value="scope.row.projectSchedule"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="项目概述" align="center" prop="projectSummarize" />
|
||||
<el-table-column label="项目二维码" align="center" prop="projectQrCode" />
|
||||
<el-table-column label="项目状态" align="center" prop="projectStatus" />
|
||||
<el-table-column label="项目排序" align="center" prop="projectSort" />
|
||||
<el-table-column label="删除标识" align="center" prop="isDel">
|
||||
<el-table-column label="计划开始时间" align="center" prop="scheduledStartTime" width="120"/>
|
||||
<el-table-column label="计划完工时间" align="center" prop="plannedCompletionTime" width="120"/>
|
||||
<el-table-column label="实际开始时间" align="center" prop="actualOperatingTime" width="120"/>
|
||||
<el-table-column label="实际完工时间" align="center" prop="actualCompletionTime" width="120"/>
|
||||
<el-table-column label="项目状态" align="center" prop="isDel">
|
||||
<template #default="scope">
|
||||
<dict-tag :options="sys_is_del" :value="scope.row.isDel"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="备注" align="center" prop="remark" />
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
|
||||
<template #default="scope">
|
||||
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['manage:proProjectInfo:edit']">修改</el-button>
|
||||
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['manage:proProjectInfo:remove']">删除</el-button>
|
||||
|
@ -193,111 +148,266 @@
|
|||
/>
|
||||
|
||||
<!-- 添加或修改项目信息对话框 -->
|
||||
<el-dialog :title="title" v-model="open" width="500px" append-to-body>
|
||||
<el-form ref="proProjectInfoRef" :model="form" :rules="rules" label-width="80px">
|
||||
<el-form-item label="所属单位" prop="deptId">
|
||||
<el-input v-model="form.deptId" placeholder="请输入所属单位" />
|
||||
<el-dialog :title="title" v-model="open" width="1080px" append-to-body>
|
||||
<el-form ref="proProjectInfoRef" :model="form" :rules="rules" label-width="100px">
|
||||
<el-tabs
|
||||
v-model="activeName"
|
||||
type="card"
|
||||
class="demo-tabs"
|
||||
>
|
||||
<el-tab-pane label="项目基本信息" name="base">
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="16">
|
||||
<el-form-item label="所属部门" prop="deptId">
|
||||
<el-tree-select
|
||||
v-model="form.deptId"
|
||||
:data="deptOptions"
|
||||
:props="{ value: 'id', label: 'label', children: 'children' }"
|
||||
value-key="id"
|
||||
placeholder="请选择所属部门"
|
||||
check-strictly
|
||||
style="width:100%"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="部门主键" prop="visDeptId">
|
||||
<el-input v-model="form.visDeptId" placeholder="请输入部门主键" />
|
||||
</el-form-item>
|
||||
<el-form-item label="显示部门" prop="disDeptId">
|
||||
<el-input v-model="form.disDeptId" placeholder="请输入显示部门" />
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="显示层级" prop="disDeptId">
|
||||
<el-tree-select
|
||||
v-model="form.disDeptId"
|
||||
:data="deptOptions"
|
||||
:props="{ value: 'id', label: 'label', children: 'children' }"
|
||||
value-key="id"
|
||||
placeholder="请选择显示层级"
|
||||
check-strictly
|
||||
style="width:100%"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="16">
|
||||
<el-form-item label="项目名称" prop="projectName">
|
||||
<el-input v-model="form.projectName" placeholder="请输入项目名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目编号" prop="projectCode">
|
||||
<el-input v-model="form.projectCode" placeholder="请输入项目编号" />
|
||||
<el-input v-model="form.projectName" maxlength="64" show-word-limit placeholder="请输入项目名称" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目简称" prop="simpleName">
|
||||
<el-input v-model="form.simpleName" placeholder="请输入项目简称" />
|
||||
<el-input v-model="form.simpleName" maxlength="32" show-word-limit placeholder="请输入项目简称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目等级" prop="projectLevel">
|
||||
<el-input v-model="form.projectLevel" placeholder="请输入项目等级" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目区县" prop="projectRegional">
|
||||
<el-input v-model="form.projectRegional" placeholder="请输入项目区县" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目地址" prop="projectAddress">
|
||||
<el-input v-model="form.projectAddress" placeholder="请输入项目地址" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目建设属性" prop="projectNature">
|
||||
<el-input v-model="form.projectNature" placeholder="请输入项目建设属性" />
|
||||
</el-form-item>
|
||||
<el-form-item label="许可证号" prop="licenceNumber">
|
||||
<el-input v-model="form.licenceNumber" placeholder="请输入许可证号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目负责人" prop="projectPerson">
|
||||
<el-input v-model="form.projectPerson" placeholder="请输入项目负责人" />
|
||||
</el-form-item>
|
||||
<el-form-item label="负责人电话" prop="projectPersonPhone">
|
||||
<el-input v-model="form.projectPersonPhone" placeholder="请输入负责人电话" />
|
||||
</el-form-item>
|
||||
<el-form-item label="经度" prop="longitude">
|
||||
<el-input v-model="form.longitude" placeholder="请输入经度" />
|
||||
</el-form-item>
|
||||
<el-form-item label="纬度" prop="latitude">
|
||||
<el-input v-model="form.latitude" placeholder="请输入纬度" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目工期" prop="projectTimeLimit">
|
||||
<el-input v-model="form.projectTimeLimit" placeholder="请输入项目工期" />
|
||||
</el-form-item>
|
||||
<el-form-item label="总投资" prop="totalInvestment">
|
||||
<el-input v-model="form.totalInvestment" placeholder="请输入总投资" />
|
||||
</el-form-item>
|
||||
<el-form-item label="建筑面积" prop="floorArea">
|
||||
<el-input v-model="form.floorArea" placeholder="请输入建筑面积" />
|
||||
</el-form-item>
|
||||
<el-form-item label="开累产值" prop="totalOutputValue">
|
||||
<el-input v-model="form.totalOutputValue" placeholder="请输入开累产值" />
|
||||
</el-form-item>
|
||||
<el-form-item label="计划完工时间" prop="plannedCompletionTime">
|
||||
<el-input v-model="form.plannedCompletionTime" placeholder="请输入计划完工时间" />
|
||||
</el-form-item>
|
||||
<el-form-item label="计划开始时间" prop="scheduledStartTime">
|
||||
<el-input v-model="form.scheduledStartTime" placeholder="请输入计划开始时间" />
|
||||
</el-form-item>
|
||||
<el-form-item label="实际开始时间" prop="actualOperatingTime">
|
||||
<el-input v-model="form.actualOperatingTime" placeholder="请输入实际开始时间" />
|
||||
</el-form-item>
|
||||
<el-form-item label="实际完工时间" prop="actualCompletionTime">
|
||||
<el-input v-model="form.actualCompletionTime" placeholder="请输入实际完工时间" />
|
||||
</el-form-item>
|
||||
<el-form-item label="合同总金额" prop="contractAmount">
|
||||
<el-input v-model="form.contractAmount" placeholder="请输入合同总金额" />
|
||||
</el-form-item>
|
||||
<el-form-item label="已支付金额" prop="paidAmount">
|
||||
<el-input v-model="form.paidAmount" placeholder="请输入已支付金额" />
|
||||
</el-form-item>
|
||||
<el-form-item label="挂账金额" prop="onAccountAmount">
|
||||
<el-input v-model="form.onAccountAmount" placeholder="请输入挂账金额" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目进度" prop="projectSchedule">
|
||||
<el-input v-model="form.projectSchedule" placeholder="请输入项目进度" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目概述" prop="projectSummarize">
|
||||
<el-input v-model="form.projectSummarize" type="textarea" placeholder="请输入内容" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目二维码" prop="projectQrCode">
|
||||
<el-input v-model="form.projectQrCode" placeholder="请输入项目二维码" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目排序" prop="projectSort">
|
||||
<el-input v-model="form.projectSort" placeholder="请输入项目排序" />
|
||||
</el-form-item>
|
||||
<el-form-item label="删除标识" prop="isDel">
|
||||
<el-select v-model="form.isDel" placeholder="请选择删除标识">
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目类型" prop="projectType">
|
||||
<el-select v-model="form.projectType" placeholder="请选择项目类型">
|
||||
<el-option
|
||||
v-for="dict in sys_is_del"
|
||||
v-for="dict in pro_project_type"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="parseInt(dict.value)"
|
||||
:value="dict.value"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="form.remark" placeholder="请输入备注" />
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目负责人" prop="projectPerson">
|
||||
<el-input v-model="form.projectPerson" maxlength="10" show-word-limit placeholder="请输入项目负责人" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="负责人电话" prop="projectPersonPhone">
|
||||
<el-input v-model="form.projectPersonPhone" maxlength="11" show-word-limit placeholder="请输入负责人电话" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="项目地址" prop="projectAddress">
|
||||
<el-input
|
||||
v-model="addressInfos"
|
||||
placeholder="请选择项目地址信息"
|
||||
@focus="getMapInfo"
|
||||
>
|
||||
<template #prefix>
|
||||
<el-icon class="el-input__icon"><Location /></el-icon>
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目工期" prop="projectTimeLimit">
|
||||
<el-input v-model.number="form.projectTimeLimit" maxlength="10" show-word-limit placeholder="请输入项目工期" >
|
||||
<template #append>天</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目总投资" prop="totalInvestment">
|
||||
<el-input v-model.number="form.totalInvestment" maxlength="20" show-word-limit placeholder="请输入项目总投资">
|
||||
<template #append>万元</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="合同总金额" prop="contractAmount">
|
||||
<el-input v-model.number="form.contractAmount" maxlength="20" show-word-limit placeholder="请输入合同总金额">
|
||||
<template #append>万元</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="建筑面积" prop="floorArea">
|
||||
<el-input v-model.number="form.floorArea" maxlength="20" show-word-limit placeholder="请输入项目建筑面积">
|
||||
<template #append>㎡</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目进度" prop="projectSchedule">
|
||||
<el-select v-model="form.projectSchedule" placeholder="请选择项目进度" style="width:100%">
|
||||
<el-option
|
||||
v-for="dict in pro_project_schedule"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="计划开工时间" prop="scheduledStartTime" >
|
||||
<el-date-picker
|
||||
v-model="form.scheduledStartTime"
|
||||
type="date"
|
||||
placeholder="请选择计划开工时间"
|
||||
style="width:100%"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="计划完工时间" prop="plannedCompletionTime">
|
||||
<el-date-picker
|
||||
v-model="form.plannedCompletionTime"
|
||||
type="date"
|
||||
placeholder="请选择计划完工时间"
|
||||
style="width:100%"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="实际开工时间" prop="actualOperatingTime">
|
||||
<el-date-picker
|
||||
v-model="form.actualOperatingTime"
|
||||
type="date"
|
||||
placeholder="请选择实际开工时间"
|
||||
style="width:100%"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="实际完工时间" prop="actualCompletionTime">
|
||||
<el-date-picker
|
||||
v-model="form.actualCompletionTime"
|
||||
type="date"
|
||||
placeholder="请选择实际完工时间"
|
||||
style="width:100%"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="项目概述" prop="projectSummarize">
|
||||
<el-input
|
||||
v-model="form.projectSummarize"
|
||||
type="textarea"
|
||||
:rows="3"
|
||||
placeholder="请输入项目概述"
|
||||
maxlength="1024"
|
||||
show-word-limit
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="参建单位信息" name="depts">
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button type="primary" icon="Plus" @click="handleAddDepts">添加</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="danger" icon="Delete" @click="handleDeleteDepts">删除</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-table :data="projectDeptsList" :row-class-name="rowProjectDeptsIndex" @selection-change="handleDeptsSelectionChange" ref="projectDeptsRef">
|
||||
<el-table-column type="selection" width="50" align="center" />
|
||||
<el-table-column label="序号" align="center" prop="index" width="50"/>
|
||||
<el-table-column label="单位类型" prop="deptType" align="center">
|
||||
<template #default="scope">
|
||||
<el-select v-model="scope.row.deptType" placeholder="请选择单位类型">
|
||||
<el-option
|
||||
v-for="dict in pro_dept_type"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="单位负责人" prop="leader" align="center">
|
||||
<template #default="scope">
|
||||
<el-input v-model="scope.row.leader" placeholder="请输入负责人姓名" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="负责人联系电话" prop="phone" align="center">
|
||||
<template #default="scope">
|
||||
<el-input v-model="scope.row.phone" placeholder="请输入负责人联系电话" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="项目大屏设置" name="setting">
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="项目显示名" prop="orgName">
|
||||
<el-input v-model="form.setting.orgName" maxlength="32" show-word-limit placeholder="请输入项目显示名" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="显示LOGO" prop="orgLogo">
|
||||
<image-upload v-model="form.setting.orgLogo" :limit="1"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="项目平面图" prop="orgPlane">
|
||||
<image-upload v-model="form.setting.orgPlane" :limit="3"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="项目图片" prop="orgImage">
|
||||
<image-upload v-model="form.setting.orgImage" :limit="9"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="项目视频" prop="orgVideo">
|
||||
<file-upload v-model="form.setting.orgVideo" :limit="1" :fileType="['mp4']" :fileSize="100"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
|
@ -306,15 +416,21 @@
|
|||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
<baidu-map ref="mapRef" @docom="mapDocom"></baidu-map>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup name="ProProjectInfo">
|
||||
import { deptTreeSelect } from "@/api/system/user";
|
||||
import { projectDeptList } from "@/api/system/dept";
|
||||
import { listProProjectInfo, getProProjectInfo, delProProjectInfo, addProProjectInfo, updateProProjectInfo } from "@/api/manage/proProjectInfo";
|
||||
import BaiduMap from "@/components/BaiduMap/Map.vue";
|
||||
|
||||
const { proxy } = getCurrentInstance();
|
||||
const { sys_is_del } = proxy.useDict('sys_is_del');
|
||||
const { pro_project_type, pro_project_schedule, pro_dept_type, sys_is_del } = proxy.useDict('pro_project_type', 'pro_project_schedule', 'pro_dept_type', 'sys_is_del');
|
||||
|
||||
const mapRef = ref("");
|
||||
const proProjectInfoList = ref([]);
|
||||
const open = ref(false);
|
||||
const loading = ref(true);
|
||||
|
@ -324,9 +440,17 @@ const single = ref(true);
|
|||
const multiple = ref(true);
|
||||
const total = ref(0);
|
||||
const title = ref("");
|
||||
const activeName = ref('base')
|
||||
const addressInfos = ref("");
|
||||
const projectDeptsList = ref([]);
|
||||
const checkedProjectDepts = ref([]);
|
||||
|
||||
const deptOptions = ref([]);
|
||||
|
||||
const data = reactive({
|
||||
form: {},
|
||||
form: {
|
||||
setting:{}
|
||||
},
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
|
@ -344,11 +468,30 @@ const data = reactive({
|
|||
isDel: null,
|
||||
},
|
||||
rules: {
|
||||
deptId: [{ required: true, message: "所属部门不能为空", trigger: "change" }],
|
||||
disDeptId: [{ required: true, message: "显示层级不能为空", trigger: "change" }],
|
||||
projectName: [{ required: true, message: "项目名称不能为空", trigger: "blur" }],
|
||||
simpleName: [{ required: false, message: "项目简称不能为空", trigger: "blur" }],
|
||||
projectType: [{ required: true, message: "项目类型不能为空", trigger: "change" }],
|
||||
projectPerson: [{ required: true, message: "项目负责人不能为空", trigger: "blur" }],
|
||||
projectPersonPhone: [{ required: true, message: "负责人电话不能为空", trigger: "blur" }],
|
||||
projectAddress: [{ required: false, message: "项目地址不能为空", trigger: "blur" }],
|
||||
projectTimeLimit: [{ required: true, message: "工程期限不能为空", trigger: "blur" }],
|
||||
totalInvestment: [{ required: true, message: "项目总投资不能为空", trigger: "blur" }],
|
||||
contractAmount: [{ required: true, message: "合同金额不能为空", trigger: "blur" }],
|
||||
}
|
||||
});
|
||||
|
||||
const { queryParams, form, rules } = toRefs(data);
|
||||
|
||||
/** 地图选择 */
|
||||
function mapDocom(pt, city) {
|
||||
form.value.projectAddress = (city.address || "") + (city.poi_desc || "");
|
||||
form.value.longitude = pt.lng.toFixed(5);
|
||||
form.value.latitude = pt.lat.toFixed(5);
|
||||
addressInfos.value = form.value.projectAddress + "," + form.value.longitude + "," + form.value.latitude;
|
||||
}
|
||||
|
||||
/** 查询项目信息列表 */
|
||||
function getList() {
|
||||
loading.value = true;
|
||||
|
@ -406,7 +549,8 @@ function reset() {
|
|||
createTime: null,
|
||||
updateBy: null,
|
||||
updateTime: null,
|
||||
remark: null
|
||||
remark: null,
|
||||
setting: {}
|
||||
};
|
||||
proxy.resetForm("proProjectInfoRef");
|
||||
}
|
||||
|
@ -448,10 +592,44 @@ function handleUpdate(row) {
|
|||
});
|
||||
}
|
||||
|
||||
/** 参建单位序号 */
|
||||
function rowProjectDeptsIndex({ row, rowIndex }) {
|
||||
row.index = rowIndex + 1;
|
||||
}
|
||||
|
||||
/** 参建单位添加按钮操作 */
|
||||
function handleAddDepts() {
|
||||
let obj = {};
|
||||
obj.deptType = "";
|
||||
obj.deptName = "";
|
||||
obj.leader = "";
|
||||
obj.phone = "";
|
||||
projectDeptsList.value.push(obj);
|
||||
}
|
||||
|
||||
/** 参建单位删除按钮操作 */
|
||||
function handleDeleteDepts() {
|
||||
if (checkedProjectDepts.value.length == 0) {
|
||||
proxy.$modal.msgError("请先选择要删除的参建单位!");
|
||||
} else {
|
||||
const projectDeptsList = projectDeptsList.value;
|
||||
const checkedProjectDepts = checkedProjectDepts.value;
|
||||
projectDeptsList.value = projectDeptsList.filter(function(item) {
|
||||
return checkedProjectDepts.indexOf(item.index) == -1
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/** 复选框选中数据 */
|
||||
function handleDeptsSelectionChange(selection) {
|
||||
checkedProjectDepts.value = selection.map(item => item.index)
|
||||
}
|
||||
|
||||
/** 提交按钮 */
|
||||
function submitForm() {
|
||||
proxy.$refs["proProjectInfoRef"].validate(valid => {
|
||||
if (valid) {
|
||||
form.value.projectDeptsList = projectDeptsList.value;
|
||||
if (form.value.id != null) {
|
||||
updateProProjectInfo(form.value).then(response => {
|
||||
proxy.$modal.msgSuccess("修改成功");
|
||||
|
@ -469,6 +647,18 @@ function submitForm() {
|
|||
});
|
||||
}
|
||||
|
||||
//修改项目排序
|
||||
function setProjectSort(row, val) {
|
||||
let param = {
|
||||
id: row.id,
|
||||
projectSort: val,
|
||||
};
|
||||
updateProProjectInfo(param).then((response) => {
|
||||
proxy.$modal.msgSuccess("修改成功");
|
||||
getList();
|
||||
});
|
||||
}
|
||||
|
||||
/** 删除按钮操作 */
|
||||
function handleDelete(row) {
|
||||
const _ids = row.id || ids.value;
|
||||
|
@ -487,5 +677,19 @@ function handleExport() {
|
|||
}, `proProjectInfo_${new Date().getTime()}.xlsx`)
|
||||
}
|
||||
|
||||
/** 查询部门下拉树结构 */
|
||||
function getDeptTree() {
|
||||
deptTreeSelect().then(response => {
|
||||
deptOptions.value = response.data;
|
||||
});
|
||||
};
|
||||
|
||||
/** 地图选择 */
|
||||
function getMapInfo(){
|
||||
mapRef.value.showDlg();
|
||||
}
|
||||
|
||||
|
||||
getList();
|
||||
getDeptTree();
|
||||
</script>
|
||||
|
|
Loading…
Reference in New Issue