提交代码

dev_xd
姜玉琦 2024-08-26 01:11:11 +08:00
parent 77fa7476d8
commit cfa648dbe6
11 changed files with 713 additions and 230 deletions

View File

@ -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.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle; import org.apache.commons.lang3.builder.ToStringStyle;
import java.util.List;
/** /**
* pro_project_info * pro_project_info
* *
@ -154,6 +156,9 @@ public class ProProjectInfo extends BaseEntity
@Excel(name = "删除标识") @Excel(name = "删除标识")
private Long isDel; private Long isDel;
private ProProjectInfoSetting setting;
private List<ProProjectInfoDepts> projectDeptsList;
public void setId(Long id) public void setId(Long id)
{ {
this.id = id; this.id = id;
@ -226,15 +231,7 @@ public class ProProjectInfo extends BaseEntity
{ {
return projectType; return projectType;
} }
public void setprojectLevel(String projectLevel)
{
this.projectLevel = projectLevel;
}
public String getprojectLevel()
{
return projectLevel;
}
public void setProjectRegional(String projectRegional) public void setProjectRegional(String projectRegional)
{ {
this.projectRegional = projectRegional; this.projectRegional = projectRegional;
@ -469,6 +466,30 @@ public class ProProjectInfo extends BaseEntity
this.deptName = deptName; 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 @Override
public String toString() { public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
@ -480,7 +501,7 @@ public class ProProjectInfo extends BaseEntity
.append("projectCode", getProjectCode()) .append("projectCode", getProjectCode())
.append("simpleName", getSimpleName()) .append("simpleName", getSimpleName())
.append("projectType", getProjectType()) .append("projectType", getProjectType())
.append("projectLevel", getprojectLevel()) .append("projectLevel", getProjectLevel())
.append("projectRegional", getProjectRegional()) .append("projectRegional", getProjectRegional())
.append("projectAddress", getProjectAddress()) .append("projectAddress", getProjectAddress())
.append("projectNature", getProjectNature()) .append("projectNature", getProjectNature())

View File

@ -38,6 +38,14 @@ public class ProProjectInfoDepts extends BaseEntity
@Excel(name = "参建单位编号") @Excel(name = "参建单位编号")
private String deptCode; private String deptCode;
/** 负责人 */
@Excel(name = "负责人")
private String leader;
/** 联系电话 */
@Excel(name = "联系电话")
private String phone;
/** 删除标识 */ /** 删除标识 */
@Excel(name = "删除标识") @Excel(name = "删除标识")
private Long isDel; private Long isDel;
@ -105,6 +113,22 @@ public class ProProjectInfoDepts extends BaseEntity
this.projectName = projectName; 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 @Override
public String toString() { public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

View File

@ -11,6 +11,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="deptType" column="dept_type" /> <result property="deptType" column="dept_type" />
<result property="deptName" column="dept_name" /> <result property="deptName" column="dept_name" />
<result property="deptCode" column="dept_code" /> <result property="deptCode" column="dept_code" />
<result property="leader" column="leader" />
<result property="phone" column="phone" />
<result property="isDel" column="is_del" /> <result property="isDel" column="is_del" />
<result property="createBy" column="create_by" /> <result property="createBy" column="create_by" />
<result property="createTime" column="create_time" /> <result property="createTime" column="create_time" />
@ -20,7 +22,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap> </resultMap>
<sql id="selectProProjectInfoDeptsVo"> <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 pro_project_info pi on pi.id = pd.project_id
left join sys_dept sd on sd.dept_id = pi.dept_id left join sys_dept sd on sd.dept_id = pi.dept_id
</sql> </sql>
@ -50,6 +52,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="deptType != null">dept_type,</if> <if test="deptType != null">dept_type,</if>
<if test="deptName != null">dept_name,</if> <if test="deptName != null">dept_name,</if>
<if test="deptCode != null">dept_code,</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="isDel != null">is_del,</if>
<if test="createBy != null">create_by,</if> <if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</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="deptType != null">#{deptType},</if>
<if test="deptName != null">#{deptName},</if> <if test="deptName != null">#{deptName},</if>
<if test="deptCode != null">#{deptCode},</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="isDel != null">#{isDel},</if>
<if test="createBy != null">#{createBy},</if> <if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</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="deptType != null">dept_type = #{deptType},</if>
<if test="deptName != null">dept_name = #{deptName},</if> <if test="deptName != null">dept_name = #{deptName},</if>
<if test="deptCode != null">dept_code = #{deptCode},</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="isDel != null">is_del = #{isDel},</if>
<if test="createBy != null">create_by = #{createBy},</if> <if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if> <if test="createTime != null">create_time = #{createTime},</if>

View File

@ -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="projectStatus != null and projectStatus != ''"> and pi.project_status = #{projectStatus}</if>
<if test="isDel != null "> and pi.is_del = #{isDel}</if> <if test="isDel != null "> and pi.is_del = #{isDel}</if>
</where> </where>
order by id project_sort, id desc order by pi.project_sort, pi.id desc
</select> </select>
<select id="selectProProjectInfoById" parameterType="Long" resultMap="ProProjectInfoResult"> <select id="selectProProjectInfoById" parameterType="Long" resultMap="ProProjectInfoResult">
@ -206,14 +206,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where id = #{id} where id = #{id}
</update> </update>
<delete id="deleteProProjectInfoById" parameterType="Long"> <update id="deleteProProjectInfoById" parameterType="Long">
delete from pro_project_info where id = #{id} update pro_project_info set is_del=1 where id = #{id}
</delete> </update>
<delete id="deleteProProjectInfoByIds" parameterType="String"> <update id="deleteProProjectInfoByIds" parameterType="String">
delete from pro_project_info where id in update pro_project_info set is_del=1 where id in
<foreach item="id" collection="array" open="(" separator="," close=")"> <foreach item="id" collection="array" open="(" separator="," close=")">
#{id} #{id}
</foreach> </foreach>
</delete> </update>
</mapper> </mapper>

View File

@ -1,6 +1,12 @@
package com.yanzhu.system.controller; package com.yanzhu.system.controller;
import java.util.List; 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.apache.commons.lang3.ArrayUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -32,6 +38,9 @@ import com.yanzhu.system.service.ISysDeptService;
@RequestMapping("/dept") @RequestMapping("/dept")
public class SysDeptController extends BaseController public class SysDeptController extends BaseController
{ {
@Autowired
private RedisService redisService;
@Autowired @Autowired
private ISysDeptService deptService; private ISysDeptService deptService;
@ -130,4 +139,24 @@ public class SysDeptController extends BaseController
deptService.checkDeptDataScope(deptId); deptService.checkDeptDataScope(deptId);
return toAjax(deptService.deleteDeptById(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);
}
} }

View File

@ -1,5 +1,6 @@
package com.yanzhu.system.controller; package com.yanzhu.system.controller;
import com.yanzhu.common.core.constant.Constants;
import com.yanzhu.common.core.domain.R; import com.yanzhu.common.core.domain.R;
import com.yanzhu.common.core.utils.poi.ExcelUtil; import com.yanzhu.common.core.utils.poi.ExcelUtil;
import com.yanzhu.common.core.web.controller.BaseController; 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.core.web.page.TableDataInfo;
import com.yanzhu.common.log.annotation.Log; import com.yanzhu.common.log.annotation.Log;
import com.yanzhu.common.log.enums.BusinessType; 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.InnerAuth;
import com.yanzhu.common.security.annotation.RequiresPermissions; import com.yanzhu.common.security.annotation.RequiresPermissions;
import com.yanzhu.common.security.utils.SecurityUtils; 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.SysRole;
import com.yanzhu.system.api.domain.SysUser; import com.yanzhu.system.api.domain.SysUser;
import com.yanzhu.system.domain.SysUserRole; import com.yanzhu.system.domain.SysUserRole;
import com.yanzhu.system.domain.vo.TreeSelect;
import com.yanzhu.system.service.ISysDeptService; import com.yanzhu.system.service.ISysDeptService;
import com.yanzhu.system.service.ISysRoleService; import com.yanzhu.system.service.ISysRoleService;
import com.yanzhu.system.service.ISysUserService; import com.yanzhu.system.service.ISysUserService;
@ -24,6 +27,7 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.List; import java.util.List;
import java.util.concurrent.TimeUnit;
/** /**
* *
@ -34,6 +38,9 @@ import java.util.List;
@RequestMapping("/role") @RequestMapping("/role")
public class SysRoleController extends BaseController public class SysRoleController extends BaseController
{ {
@Autowired
private RedisService redisService;
@Autowired @Autowired
private ISysRoleService roleService; private ISysRoleService roleService;
@ -241,7 +248,15 @@ public class SysRoleController extends BaseController
{ {
AjaxResult ajax = AjaxResult.success(); AjaxResult ajax = AjaxResult.success();
ajax.put("checkedKeys", deptService.selectDeptListByRoleId(roleId)); 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; return ajax;
} }

View File

@ -4,9 +4,13 @@ import java.io.IOException;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.servlet.http.HttpServletResponse; 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 io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.ArrayUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -51,6 +55,9 @@ import com.yanzhu.system.service.ISysUserService;
@RequestMapping("/user") @RequestMapping("/user")
public class SysUserController extends BaseController public class SysUserController extends BaseController
{ {
@Autowired
private RedisService redisService;
@Autowired @Autowired
private ISysUserService userService; private ISysUserService userService;
@ -346,7 +353,14 @@ public class SysUserController extends BaseController
@GetMapping("/deptTree") @GetMapping("/deptTree")
public AjaxResult deptTree(SysDept dept) 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 = "指定流程办理人员列表") @ApiOperation(value = "指定流程办理人员列表")

View File

@ -8,6 +8,8 @@
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="icon" href="/favicon.ico"> <link rel="icon" href="/favicon.ico">
<title>若依管理系统</title> <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]--> <!--[if lt IE 11]><script>window.location.href='/html/ie.html';</script><![endif]-->
<style> <style>
html, html,

View File

@ -50,3 +50,11 @@ export function delDept(deptId) {
method: 'delete' method: 'delete'
}) })
} }
// 项目单位列表
export function projectDeptList() {
return request({
url: '/system/dept/projectDeptList',
method: 'get'
})
}

View File

@ -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>

View File

@ -1,30 +1,6 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px"> <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-form-item label="项目名称" prop="projectName">
<el-input <el-input
v-model="queryParams.projectName" v-model="queryParams.projectName"
@ -33,54 +9,14 @@
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="项目编号" prop="projectCode"> <el-form-item label="项目类型" prop="projectType">
<el-input <el-select v-model="queryParams.projectType" placeholder="请选择项目类型" clearable>
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-option <el-option
v-for="dict in sys_is_del" v-for="dict in pro_project_type"
:key="dict.value" :key="dict.value"
:label="dict.label" :label="dict.label"
:value="dict.value" :value="dict.value"
/> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
@ -133,50 +69,69 @@
<el-table v-loading="loading" :data="proProjectInfoList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="proProjectInfoList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="主键" align="center" prop="id" /> <el-table-column label="项目名称" align="center" prop="projectName" width="250"/>
<el-table-column label="所属单位" align="center" prop="deptId" /> <el-table-column label="项目部门" align="center" prop="deptName" width="200"/>
<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="simpleName" /> <el-table-column label="项目简称" align="center" prop="simpleName" />
<el-table-column label="项目类型" align="center" prop="projectType" /> <el-table-column label="项目类型" align="center" prop="projectType" width="100">
<el-table-column label="项目等级" align="center" prop="projectLevel" /> <template #default="scope">
<el-table-column label="项目区县" align="center" prop="projectRegional" /> <dict-tag :options="pro_project_type" :value="scope.row.projectType"/>
<el-table-column label="项目地址" align="center" prop="projectAddress" /> </template>
<el-table-column label="项目建设属性" align="center" prop="projectNature" /> </el-table-column>
<el-table-column label="许可证号" align="center" prop="licenceNumber" /> <el-table-column label="二维码" align="center" prop="projectQrCode" width="80">
<el-table-column label="项目负责人" align="center" prop="projectPerson" /> <template #default="scope">
<el-table-column label="负责人电话" align="center" prop="projectPersonPhone" /> <image-preview :src="scope.row.projectQrCode" :width="50" :height="50"/>
<el-table-column label="经度" align="center" prop="longitude" /> </template>
<el-table-column label="纬度" align="center" prop="latitude" /> </el-table-column>
<el-table-column label="项目工期" align="center" prop="projectTimeLimit" /> <el-table-column label="项目排序" align="center" prop="projectSort" width="120">
<el-table-column label="总投资" align="center" prop="totalInvestment" /> <template #default="scope">
<el-table-column label="建筑面积" align="center" prop="floorArea" /> <el-input-number size="mini" v-model="scope.row.projectSort" :min="1" :max="999"
<el-table-column label="开累产值" align="center" prop="totalOutputValue" /> @change="setProjectSort(scope.row, $event)"></el-input-number>
<el-table-column label="计划完工时间" align="center" prop="plannedCompletionTime" /> </template>
<el-table-column label="计划开始时间" align="center" prop="scheduledStartTime" /> </el-table-column>
<el-table-column label="实际开始时间" align="center" prop="actualOperatingTime" /> <el-table-column label="项目地址" align="center" prop="projectAddress" width="250"/>
<el-table-column label="实际完工时间" align="center" prop="actualCompletionTime" /> <el-table-column label="负责人" align="center" prop="projectPerson" width="100"/>
<el-table-column label="合同总金额" align="center" prop="contractAmount" /> <el-table-column label="负责人电话" align="center" prop="projectPersonPhone" width="120"/>
<el-table-column label="已支付金额" align="center" prop="paidAmount" /> <el-table-column label="项目工期" align="center" prop="projectTimeLimit" width="120">
<el-table-column label="挂账金额" align="center" prop="onAccountAmount" /> <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"> <el-table-column label="项目进度" align="center" prop="projectSchedule">
<template #default="scope"> <template #default="scope">
<dict-tag :options="pro_project_schedule" :value="scope.row.projectSchedule"/> <dict-tag :options="pro_project_schedule" :value="scope.row.projectSchedule"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="项目概述" align="center" prop="projectSummarize" /> <el-table-column label="计划开始时间" align="center" prop="scheduledStartTime" width="120"/>
<el-table-column label="项目二维码" align="center" prop="projectQrCode" /> <el-table-column label="计划完工时间" align="center" prop="plannedCompletionTime" width="120"/>
<el-table-column label="项目状态" align="center" prop="projectStatus" /> <el-table-column label="实际开始时间" align="center" prop="actualOperatingTime" width="120"/>
<el-table-column label="项目排序" align="center" prop="projectSort" /> <el-table-column label="实际完工时间" align="center" prop="actualCompletionTime" width="120"/>
<el-table-column label="删除标识" align="center" prop="isDel"> <el-table-column label="项目状态" align="center" prop="isDel">
<template #default="scope"> <template #default="scope">
<dict-tag :options="sys_is_del" :value="scope.row.isDel"/> <dict-tag :options="sys_is_del" :value="scope.row.isDel"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="备注" align="center" prop="remark" /> <el-table-column label="创建时间" align="center" prop="createTime" width="180">
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <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"> <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="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> <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-dialog :title="title" v-model="open" width="1080px" append-to-body>
<el-form ref="proProjectInfoRef" :model="form" :rules="rules" label-width="80px"> <el-form ref="proProjectInfoRef" :model="form" :rules="rules" label-width="100px">
<el-form-item label="所属单位" prop="deptId"> <el-tabs
<el-input v-model="form.deptId" placeholder="请输入所属单位" /> 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>
<el-form-item label="部门主键" prop="visDeptId"> </el-col>
<el-input v-model="form.visDeptId" placeholder="请输入部门主键" /> <el-col :span="8">
</el-form-item> <el-form-item label="显示层级" prop="disDeptId">
<el-form-item label="显示部门" prop="disDeptId"> <el-tree-select
<el-input v-model="form.disDeptId" placeholder="请输入显示部门" /> 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-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="16">
<el-form-item label="项目名称" prop="projectName"> <el-form-item label="项目名称" prop="projectName">
<el-input v-model="form.projectName" placeholder="请输入项目名称" /> <el-input v-model="form.projectName" maxlength="64" show-word-limit placeholder="请输入项目名称" />
</el-form-item>
<el-form-item label="项目编号" prop="projectCode">
<el-input v-model="form.projectCode" placeholder="请输入项目编号" />
</el-form-item> </el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目简称" prop="simpleName"> <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>
<el-form-item label="项目等级" prop="projectLevel"> </el-col>
<el-input v-model="form.projectLevel" placeholder="请输入项目等级" /> </el-row>
</el-form-item> <el-row :gutter="20">
<el-form-item label="项目区县" prop="projectRegional"> <el-col :span="8">
<el-input v-model="form.projectRegional" placeholder="请输入项目区县" /> <el-form-item label="项目类型" prop="projectType">
</el-form-item> <el-select v-model="form.projectType" placeholder="请选择项目类型">
<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-option <el-option
v-for="dict in sys_is_del" v-for="dict in pro_project_type"
:key="dict.value" :key="dict.value"
:label="dict.label" :label="dict.label"
:value="parseInt(dict.value)" :value="dict.value"
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="备注" prop="remark"> </el-col>
<el-input v-model="form.remark" placeholder="请输入备注" /> <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-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> </el-form>
<template #footer> <template #footer>
<div class="dialog-footer"> <div class="dialog-footer">
@ -306,15 +416,21 @@
</div> </div>
</template> </template>
</el-dialog> </el-dialog>
<baidu-map ref="mapRef" @docom="mapDocom"></baidu-map>
</div> </div>
</template> </template>
<script setup name="ProProjectInfo"> <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 { listProProjectInfo, getProProjectInfo, delProProjectInfo, addProProjectInfo, updateProProjectInfo } from "@/api/manage/proProjectInfo";
import BaiduMap from "@/components/BaiduMap/Map.vue";
const { proxy } = getCurrentInstance(); 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 proProjectInfoList = ref([]);
const open = ref(false); const open = ref(false);
const loading = ref(true); const loading = ref(true);
@ -324,9 +440,17 @@ const single = ref(true);
const multiple = ref(true); const multiple = ref(true);
const total = ref(0); const total = ref(0);
const title = ref(""); const title = ref("");
const activeName = ref('base')
const addressInfos = ref("");
const projectDeptsList = ref([]);
const checkedProjectDepts = ref([]);
const deptOptions = ref([]);
const data = reactive({ const data = reactive({
form: {}, form: {
setting:{}
},
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
@ -344,11 +468,30 @@ const data = reactive({
isDel: null, isDel: null,
}, },
rules: { 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); 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() { function getList() {
loading.value = true; loading.value = true;
@ -406,7 +549,8 @@ function reset() {
createTime: null, createTime: null,
updateBy: null, updateBy: null,
updateTime: null, updateTime: null,
remark: null remark: null,
setting: {}
}; };
proxy.resetForm("proProjectInfoRef"); 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() { function submitForm() {
proxy.$refs["proProjectInfoRef"].validate(valid => { proxy.$refs["proProjectInfoRef"].validate(valid => {
if (valid) { if (valid) {
form.value.projectDeptsList = projectDeptsList.value;
if (form.value.id != null) { if (form.value.id != null) {
updateProProjectInfo(form.value).then(response => { updateProProjectInfo(form.value).then(response => {
proxy.$modal.msgSuccess("修改成功"); 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) { function handleDelete(row) {
const _ids = row.id || ids.value; const _ids = row.id || ids.value;
@ -487,5 +677,19 @@ function handleExport() {
}, `proProjectInfo_${new Date().getTime()}.xlsx`) }, `proProjectInfo_${new Date().getTime()}.xlsx`)
} }
/** 查询部门下拉树结构 */
function getDeptTree() {
deptTreeSelect().then(response => {
deptOptions.value = response.data;
});
};
/** 地图选择 */
function getMapInfo(){
mapRef.value.showDlg();
}
getList(); getList();
getDeptTree();
</script> </script>