提交代码

dev_xd
姜玉琦 2024-12-29 21:35:34 +08:00
parent 70f43b3973
commit 7dbe6f0e68
75 changed files with 3258 additions and 2515 deletions

View File

@ -17,8 +17,14 @@ public class FlowTaskEntity extends BaseEntity {
private static final long serialVersionUID = 1L;
private String businessImg;
private String businessKey;
private String businessMk1;
private String businessMk2;
private String businessMk3;
@ApiModelProperty("任务编号")
private String taskId;
@ -121,6 +127,14 @@ public class FlowTaskEntity extends BaseEntity {
this.taskId = taskId;
}
public String getBusinessImg() {
return businessImg;
}
public void setBusinessImg(String businessImg) {
this.businessImg = businessImg;
}
public String getExecutionId() {
return executionId;
}
@ -369,5 +383,27 @@ public class FlowTaskEntity extends BaseEntity {
this.deptAncestors = deptAncestors;
}
public String getBusinessMk1() {
return businessMk1;
}
public void setBusinessMk1(String businessMk1) {
this.businessMk1 = businessMk1;
}
public String getBusinessMk2() {
return businessMk2;
}
public void setBusinessMk2(String businessMk2) {
this.businessMk2 = businessMk2;
}
public String getBusinessMk3() {
return businessMk3;
}
public void setBusinessMk3(String businessMk3) {
this.businessMk3 = businessMk3;
}
}

View File

@ -39,6 +39,9 @@ public class ProProjectInfoSubdepts extends BaseEntity
@Excel(name = "分包单位类型")
private String subDeptType;
/** 分包单位类型 */
private String subDeptTypeName;
/** 分包单位名称 */
@Excel(name = "分包单位名称")
private String subDeptName;
@ -364,6 +367,14 @@ public class ProProjectInfoSubdepts extends BaseEntity
this.leaderDegreeGrade = leaderDegreeGrade;
}
public String getSubDeptTypeName() {
return subDeptTypeName;
}
public void setSubDeptTypeName(String subDeptTypeName) {
this.subDeptTypeName = subDeptTypeName;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

View File

@ -0,0 +1,149 @@
package com.yanzhu.manage.domain;
import com.yanzhu.common.core.annotation.Excel;
import com.yanzhu.common.core.web.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
* wx_menu_config
*
* @author JiangYuQi
* @date 2024-12-29
*/
public class WxMenuConfig extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 主键 */
private Long id;
/** 项目主键 */
@Excel(name = "项目主键")
private Long projectId;
/** 菜单名称 */
@Excel(name = "菜单名称")
private String menuName;
/** 菜单标识 */
@Excel(name = "菜单标识")
private String menuIdenti;
/** 菜单图标 */
@Excel(name = "菜单图标")
private String menuImg;
/** 菜单地址 */
@Excel(name = "菜单地址")
private String menuUrl;
/** 删除状态0 未删除 1 已删除) */
private Long delFlag;
/** 菜单排序 */
@Excel(name = "菜单排序")
private Long menuSort;
/** 菜单类型 */
@Excel(name = "菜单类型")
private String menuType;
public void setId(Long id)
{
this.id = id;
}
public Long getId()
{
return id;
}
public void setProjectId(Long projectId)
{
this.projectId = projectId;
}
public Long getProjectId()
{
return projectId;
}
public void setMenuName(String menuName)
{
this.menuName = menuName;
}
public String getMenuName()
{
return menuName;
}
public void setMenuIdenti(String menuIdenti)
{
this.menuIdenti = menuIdenti;
}
public String getMenuIdenti()
{
return menuIdenti;
}
public void setMenuImg(String menuImg)
{
this.menuImg = menuImg;
}
public String getMenuImg()
{
return menuImg;
}
public void setMenuUrl(String menuUrl)
{
this.menuUrl = menuUrl;
}
public String getMenuUrl()
{
return menuUrl;
}
public void setDelFlag(Long delFlag)
{
this.delFlag = delFlag;
}
public Long getDelFlag()
{
return delFlag;
}
public void setMenuSort(Long menuSort)
{
this.menuSort = menuSort;
}
public Long getMenuSort()
{
return menuSort;
}
public void setMenuType(String menuType)
{
this.menuType = menuType;
}
public String getMenuType()
{
return menuType;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("projectId", getProjectId())
.append("menuName", getMenuName())
.append("menuIdenti", getMenuIdenti())
.append("menuImg", getMenuImg())
.append("menuUrl", getMenuUrl())
.append("delFlag", getDelFlag())
.append("menuSort", getMenuSort())
.append("createTime", getCreateTime())
.append("menuType", getMenuType())
.toString();
}
}

View File

@ -0,0 +1,66 @@
package com.yanzhu.manage.domain;
import com.yanzhu.common.core.annotation.Excel;
import com.yanzhu.common.core.web.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
* wx_menu_config_role
*
* @author JiangYuQi
* @date 2024-12-29
*/
public class WxMenuConfigRole extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 菜单主键 */
@Excel(name = "菜单主键")
private Long smcid;
/** 角色主键 */
@Excel(name = "角色主键")
private Long roleId;
/** 用户主键 */
@Excel(name = "用户主键")
private Long userId;
public void setSmcid(Long smcid)
{
this.smcid = smcid;
}
public Long getSmcid()
{
return smcid;
}
public void setRoleId(Long roleId)
{
this.roleId = roleId;
}
public Long getRoleId()
{
return roleId;
}
public void setUserId(Long userId)
{
this.userId = userId;
}
public Long getUserId()
{
return userId;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("smcid", getSmcid())
.append("roleId", getRoleId())
.append("userId", getUserId())
.toString();
}
}

View File

@ -0,0 +1,70 @@
package com.yanzhu.manage.mapper;
import java.util.List;
import com.yanzhu.manage.domain.WxMenuConfig;
/**
* Mapper
*
* @author JiangYuQi
* @date 2024-12-29
*/
public interface WxMenuConfigMapper
{
/**
*
*
* @param id
* @return
*/
public WxMenuConfig selectWxMenuConfigById(Long id);
/**
*
*
* @param wxMenuConfig
* @return
*/
public List<WxMenuConfig> selectWxMenuConfigList(WxMenuConfig wxMenuConfig);
/**
*
*
* @param wxMenuConfig
* @return
*/
public int insertWxMenuConfig(WxMenuConfig wxMenuConfig);
/**
*
*
* @param wxMenuConfig
* @return
*/
public int updateWxMenuConfig(WxMenuConfig wxMenuConfig);
/**
*
*
* @param id
* @return
*/
public int deleteWxMenuConfigById(Long id);
/**
*
*
* @param ids
* @return
*/
public int deleteWxMenuConfigByIds(Long[] ids);
/**
*
*
* @param wxMenuConfig
* @return
*/
public List<WxMenuConfig> findUserMenuList(WxMenuConfig wxMenuConfig);
}

View File

@ -0,0 +1,61 @@
package com.yanzhu.manage.mapper;
import java.util.List;
import com.yanzhu.manage.domain.WxMenuConfigRole;
/**
* Mapper
*
* @author JiangYuQi
* @date 2024-12-29
*/
public interface WxMenuConfigRoleMapper
{
/**
*
*
* @param smcid
* @return
*/
public WxMenuConfigRole selectWxMenuConfigRoleBySmcid(Long smcid);
/**
*
*
* @param wxMenuConfigRole
* @return
*/
public List<WxMenuConfigRole> selectWxMenuConfigRoleList(WxMenuConfigRole wxMenuConfigRole);
/**
*
*
* @param wxMenuConfigRole
* @return
*/
public int insertWxMenuConfigRole(WxMenuConfigRole wxMenuConfigRole);
/**
*
*
* @param wxMenuConfigRole
* @return
*/
public int updateWxMenuConfigRole(WxMenuConfigRole wxMenuConfigRole);
/**
*
*
* @param smcid
* @return
*/
public int deleteWxMenuConfigRoleBySmcid(Long smcid);
/**
*
*
* @param smcids
* @return
*/
public int deleteWxMenuConfigRoleBySmcids(Long[] smcids);
}

View File

@ -48,7 +48,12 @@
<!--查询我的代办任务-->
<select id="selectMyAwaitFlowTask" parameterType="FlowTaskEntity" resultType="Map">
select fa.* from vw_flow_await fa
select fa.*
<if test='activeTags == "depts"'>, sud.business_license_path as businessImg, bus.sub_dept_name as businessMk1, sdd.dict_label as businessMk2, sud.sub_dept_code as businessMk3</if>
<if test='activeTags == "users"'>, sus.user_picture as businessImg, sus.card_code as businessMk1, sdd.dict_label as businessMk2, bus.sub_dept_name as businessMk3</if>
from vw_flow_await fa
<if test='activeTags == "depts"'> left join pro_project_info_subdepts_users bus on bus.id = fa.businessKey left join pro_project_info_subdepts sud on sud.id = bus.sub_dept_id left join sys_dict_data sdd on sdd.dict_value = bus.sub_dept_type and sdd.dict_type='sub_dept_type' </if>
<if test='activeTags == "users"'> left join pro_project_info_subdepts_users bus on bus.id = fa.businessKey left join sys_dict_data sdd on sdd.dict_value = bus.craft_post and sdd.dict_type='pro_craft_post' left join sys_user sus on sus.user_id = bus.user_id</if>
where
fa.taskName != '申请人提交'
<if test="procDefName != null and procDefName != ''"> and fa.procDefName like concat('%', #{procDefName}, '%')</if>
@ -63,6 +68,8 @@
<if test="startComName != null and startComName != ''"> and fa.startComName like concat('%', #{startComName}, '%')</if>
<if test="startProId != null and startProId != ''"> and fa.startProId = #{startProId}</if>
<if test="startProName != null and startProName != ''"> and fa.startProName like concat('%', #{startProName}, '%')</if>
<if test='activeTags == "depts"'> and fa.category = '1'</if>
<if test='activeTags == "users"'> and fa.category in ('2','3','4')</if>
<if test="assigneeId != null and roleIds != null and roleIds.size()>0">
AND (fa.ASSIGNEE_ = #{assigneeId}
OR (
@ -114,7 +121,12 @@
<!--查询我的已办任务-->
<select id="selectMyFinishedFlowTask" parameterType="FlowTaskEntity" resultType="Map">
select fa.* from vw_flow_finished fa
select fa.*
<if test='activeTags == "depts"'>, sud.business_license_path as businessImg, bus.sub_dept_name as businessMk1, sdd.dict_label as businessMk2, sud.sub_dept_code as businessMk3</if>
<if test='activeTags == "users"'>, sus.user_picture as businessImg, sus.card_code as businessMk1, sdd.dict_label as businessMk2, bus.sub_dept_name as businessMk3</if>
from vw_flow_finished fa
<if test='activeTags == "depts"'> left join pro_project_info_subdepts_users bus on bus.id = fa.businessKey left join pro_project_info_subdepts sud on sud.id = bus.sub_dept_id left join sys_dict_data sdd on sdd.dict_value = bus.sub_dept_type and sdd.dict_type='sub_dept_type' </if>
<if test='activeTags == "users"'> left join pro_project_info_subdepts_users bus on bus.id = fa.businessKey left join sys_dict_data sdd on sdd.dict_value = bus.craft_post and sdd.dict_type='pro_craft_post' left join sys_user sus on sus.user_id = bus.user_id</if>
where
fa.ASSIGNEE_=#{assigneeId}
<if test="procDefName != null and procDefName != ''"> and fa.procDefName like concat('%', #{procDefName}, '%')</if>
@ -127,6 +139,8 @@
<if test="startComName != null and startComName != ''"> and fa.startComName like concat('%', #{startComName}, '%')</if>
<if test="startProId != null and startProId != ''"> and fa.startProId = #{startProId}</if>
<if test="startProName != null and startProName != ''"> and fa.startProName like concat('%', #{startProName}, '%')</if>
<if test='activeTags == "depts"'> and fa.category = '1'</if>
<if test='activeTags == "users"'> and fa.category in ('2','3','4')</if>
<if test="params.beginTime != null and params.beginTime != '' and params.endTime != null and params.endTime != ''"> and fa.endTime between #{params.beginTime} and #{params.endTime}</if>
order by fa.endTime desc
</select>

View File

@ -11,6 +11,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="projectId" column="project_id" />
<result property="projectName" column="project_name" />
<result property="subDeptType" column="sub_dept_type" />
<result property="subDeptTypeName" column="sub_dept_type_name" />
<result property="subDeptName" column="sub_dept_name" />
<result property="subDeptCode" column="sub_dept_code" />
<result property="subDeptLeaderId" column="sub_dept_leader_id" />
@ -35,9 +36,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<sql id="selectProProjectInfoSubdeptsVo">
select ps.id, ps.com_id, sd.dept_name as com_name, ps.project_id, pi.project_name, ps.sub_dept_type, ps.sub_dept_name, ps.sub_dept_code, ps.sub_dept_leader_id, ps.sub_dept_leader_name, ps.sub_dept_leader_code, ps.sub_dept_leader_phone, ps.business_license_path, ps.sub_dept_infos, ps.contract_infos, ps.use_dates, ps.start_work_dates, ps.end_work_dates, ps.use_status, ps.approve_status, ps.qr_code, ps.is_del, ps.create_by, ps.create_time, ps.update_by, ps.update_time, ps.remark from pro_project_info_subdepts ps
select ps.id, ps.com_id, sd.dept_name as com_name, ps.project_id, pi.project_name, ps.sub_dept_type, sdd.dict_label as sub_dept_type_name, ps.sub_dept_name, ps.sub_dept_code, ps.sub_dept_leader_id, ps.sub_dept_leader_name, ps.sub_dept_leader_code, ps.sub_dept_leader_phone, ps.business_license_path, ps.sub_dept_infos, ps.contract_infos, ps.use_dates, ps.start_work_dates, ps.end_work_dates, ps.use_status, ps.approve_status, ps.qr_code, ps.is_del, ps.create_by, ps.create_time, ps.update_by, ps.update_time, ps.remark from pro_project_info_subdepts ps
left join pro_project_info pi on pi.id = ps.project_id
left join sys_dept sd on sd.dept_id = pi.com_id
left join sys_dict_data sdd on sdd.dict_value = ps.sub_dept_type and sdd.dict_type = 'sub_dept_type'
</sql>
<select id="selectProProjectInfoSubdeptsList" parameterType="ProProjectInfoSubdepts" resultMap="ProProjectInfoSubdeptsResult">

View File

@ -0,0 +1,111 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yanzhu.manage.mapper.WxMenuConfigMapper">
<resultMap type="WxMenuConfig" id="WxMenuConfigResult">
<result property="id" column="id" />
<result property="projectId" column="project_id" />
<result property="menuName" column="menu_name" />
<result property="menuIdenti" column="menu_identi" />
<result property="menuImg" column="menu_img" />
<result property="menuUrl" column="menu_url" />
<result property="delFlag" column="del_flag" />
<result property="menuSort" column="menu_sort" />
<result property="createTime" column="create_time" />
<result property="menuType" column="menu_type" />
</resultMap>
<sql id="selectWxMenuConfigVo">
select id, project_id, menu_name, menu_identi, menu_img, menu_url, del_flag, menu_sort, create_time, menu_type from wx_menu_config
</sql>
<select id="selectWxMenuConfigList" parameterType="WxMenuConfig" resultMap="WxMenuConfigResult">
<include refid="selectWxMenuConfigVo"/>
<where>
<if test="projectId != null "> and project_id = #{projectId}</if>
<if test="menuName != null and menuName != ''"> and menu_name like concat('%', #{menuName}, '%')</if>
<if test="menuType != null and menuType != ''"> and menu_type = #{menuType}</if>
</where>
</select>
<select id="selectWxMenuConfigById" parameterType="Long" resultMap="WxMenuConfigResult">
<include refid="selectWxMenuConfigVo"/>
where id = #{id}
</select>
<insert id="insertWxMenuConfig" parameterType="WxMenuConfig" useGeneratedKeys="true" keyProperty="id">
insert into wx_menu_config
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="projectId != null">project_id,</if>
<if test="menuName != null">menu_name,</if>
<if test="menuIdenti != null">menu_identi,</if>
<if test="menuImg != null">menu_img,</if>
<if test="menuUrl != null">menu_url,</if>
<if test="delFlag != null">del_flag,</if>
<if test="menuSort != null">menu_sort,</if>
<if test="createTime != null">create_time,</if>
<if test="menuType != null">menu_type,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="projectId != null">#{projectId},</if>
<if test="menuName != null">#{menuName},</if>
<if test="menuIdenti != null">#{menuIdenti},</if>
<if test="menuImg != null">#{menuImg},</if>
<if test="menuUrl != null">#{menuUrl},</if>
<if test="delFlag != null">#{delFlag},</if>
<if test="menuSort != null">#{menuSort},</if>
<if test="createTime != null">#{createTime},</if>
<if test="menuType != null">#{menuType},</if>
</trim>
</insert>
<update id="updateWxMenuConfig" parameterType="WxMenuConfig">
update wx_menu_config
<trim prefix="SET" suffixOverrides=",">
<if test="projectId != null">project_id = #{projectId},</if>
<if test="menuName != null">menu_name = #{menuName},</if>
<if test="menuIdenti != null">menu_identi = #{menuIdenti},</if>
<if test="menuImg != null">menu_img = #{menuImg},</if>
<if test="menuUrl != null">menu_url = #{menuUrl},</if>
<if test="delFlag != null">del_flag = #{delFlag},</if>
<if test="menuSort != null">menu_sort = #{menuSort},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="menuType != null">menu_type = #{menuType},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteWxMenuConfigById" parameterType="Long">
delete from wx_menu_config where id = #{id}
</delete>
<delete id="deleteWxMenuConfigByIds" parameterType="String">
delete from wx_menu_config where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
<!--查询角色相关菜单-->
<select id="findUserMenuList" parameterType="WxMenuConfig" resultMap="WxMenuConfigResult">
SELECT
DISTINCT smc.id,
smc.menu_name,
smc.menu_identi,
smc.menu_img,
smc.menu_url,
smc.menu_sort
FROM
wx_menu_config smc
LEFT JOIN wx_menu_config_role smcr ON smcr.smcid = smc.id
LEFT JOIN sys_user_role ur ON ur.role_id = smcr.role_id
WHERE smc.del_flag = 0
and (ur.user_id = #{currentUserId} or smcr.user_id = #{currentUserId})
<if test="activeProjectId != null"> and smc.project_id = #{activeProjectId}</if>
<if test="menuType != null and menuType != ''"> and smc.menu_type = #{menuType}</if>
order by smc.menu_sort asc
</select>
</mapper>

View File

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yanzhu.manage.mapper.WxMenuConfigRoleMapper">
<resultMap type="WxMenuConfigRole" id="WxMenuConfigRoleResult">
<result property="smcid" column="smcid" />
<result property="roleId" column="role_id" />
<result property="userId" column="user_id" />
</resultMap>
<sql id="selectWxMenuConfigRoleVo">
select smcid, role_id, user_id from wx_menu_config_role
</sql>
<select id="selectWxMenuConfigRoleList" parameterType="WxMenuConfigRole" resultMap="WxMenuConfigRoleResult">
<include refid="selectWxMenuConfigRoleVo"/>
<where>
<if test="smcid != null "> and smcid = #{smcid}</if>
<if test="roleId != null "> and role_id = #{roleId}</if>
<if test="userId != null "> and user_id = #{userId}</if>
</where>
</select>
<select id="selectWxMenuConfigRoleBySmcid" parameterType="Long" resultMap="WxMenuConfigRoleResult">
<include refid="selectWxMenuConfigRoleVo"/>
where smcid = #{smcid}
</select>
<insert id="insertWxMenuConfigRole" parameterType="WxMenuConfigRole">
insert into wx_menu_config_role
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="smcid != null">smcid,</if>
<if test="roleId != null">role_id,</if>
<if test="userId != null">user_id,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="smcid != null">#{smcid},</if>
<if test="roleId != null">#{roleId},</if>
<if test="userId != null">#{userId},</if>
</trim>
</insert>
<update id="updateWxMenuConfigRole" parameterType="WxMenuConfigRole">
update wx_menu_config_role
<trim prefix="SET" suffixOverrides=",">
<if test="roleId != null">role_id = #{roleId},</if>
<if test="userId != null">user_id = #{userId},</if>
</trim>
where smcid = #{smcid}
</update>
<delete id="deleteWxMenuConfigRoleBySmcid" parameterType="Long">
delete from wx_menu_config_role where smcid = #{smcid}
</delete>
<delete id="deleteWxMenuConfigRoleBySmcids" parameterType="String">
delete from wx_menu_config_role where smcid in
<foreach item="smcid" collection="array" open="(" separator="," close=")">
#{smcid}
</foreach>
</delete>
</mapper>

View File

@ -197,9 +197,9 @@ public class FileUploadUtils
ex.printStackTrace();
}
absPath = cutResult?(absPath+".sign.png"):absPath;
int w = ImgUtil.read(FileUtil.file(absPath)).getWidth()/20;
int w = ImgUtil.read(FileUtil.file(absPath)).getWidth();
ImgUtil.scale(FileUtil.file(absPath),
FileUtil.file(absPath + ".min.png"), w);
FileUtil.file(absPath + ".min.png"), 25/w);
}
}
}catch (Exception ex){

View File

@ -1,24 +1,32 @@
package com.yanzhu.flowable.controller;
import com.yanzhu.common.core.constant.Constants;
import com.yanzhu.common.core.text.Convert;
import com.yanzhu.common.core.utils.StringUtils;
import com.yanzhu.common.core.web.controller.BaseController;
import com.yanzhu.common.core.web.domain.AjaxResult;
import com.yanzhu.common.core.web.page.TableDataInfo;
import com.yanzhu.common.redis.service.RedisService;
import com.yanzhu.common.security.utils.SecurityUtils;
import com.yanzhu.flowable.domain.my.FlowTaskEntity;
import com.yanzhu.flowable.service.IFlowBusinessKeyService;
import com.yanzhu.flowable.service.IFlowDefinitionService;
import com.yanzhu.system.api.domain.SysRole;
import com.yanzhu.system.api.model.LoginUser;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.flowable.bpmn.model.UserTask;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
@ -35,6 +43,12 @@ import java.util.stream.Collectors;
@RequestMapping("/businessKey")
public class FlowBusinessKeyController extends BaseController {
@Autowired
private RedisService redisService;
@Autowired
private IFlowDefinitionService flowDefinitionService;
@Autowired
private IFlowBusinessKeyService flowBusinessKeyService;
@ -70,6 +84,24 @@ public class FlowBusinessKeyController extends BaseController {
return getDataTable(flowBusinessKeyService.selectAllFlowTaskByParams(flowTaskEntity));
}
/**
*
* @param deployId
* @return
*/
@ApiOperation(value = "查询流程节点")
@GetMapping("/readDeployNotes/{deployId}")
public AjaxResult readDeployNotes(@ApiParam(value = "流程定义id") @PathVariable(value = "deployId") String deployId) {
String key = "businessKey_readDeployNotes:" + deployId;
Object object = redisService.getCacheObject(key);
if (object != null) {
return success(object);
}
List<UserTask> list = flowDefinitionService.findFlowNodes(deployId);
redisService.setCacheObject(key, list, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
return success(list);
}
/**
*
* @param flowTaskEntity

View File

@ -2,6 +2,7 @@ package com.yanzhu.flowable.service;
import com.yanzhu.common.core.web.domain.AjaxResult;
import com.yanzhu.flowable.domain.dto.FlowProcDefDto;
import org.flowable.bpmn.model.UserTask;
import java.io.IOException;
import java.io.InputStream;
@ -91,4 +92,11 @@ public interface IFlowDefinitionService {
* @return
*/
InputStream readImage(String deployId);
/**
*
* @param deployId
* @return
*/
public List<UserTask> findFlowNodes(String deployId);
}

View File

@ -44,7 +44,7 @@ public class FlowBusinessKeyServiceImpl implements IFlowBusinessKeyService {
@Override
public Map<String,Object> quueryCount(FlowTaskEntity flowTaskEntity) {
flowTaskEntity.setActiveTags("await");
int awaitSize = flowBusinessKeyMapper.selectAllFlowTaskByParams(flowTaskEntity).size();
int awaitSize = flowBusinessKeyMapper.selectMyAwaitFlowTask(flowTaskEntity).size();
flowTaskEntity.setActiveTags("finished");
int finishedSize = flowBusinessKeyMapper.selectAllFlowTaskByParams(flowTaskEntity).size();
Map<String, Object> dataMap = new HashMap<>();

View File

@ -19,6 +19,7 @@ import com.yanzhu.system.api.domain.SysUser;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils;
import org.flowable.bpmn.model.BpmnModel;
import org.flowable.bpmn.model.UserTask;
import org.flowable.engine.repository.Deployment;
import org.flowable.engine.repository.ProcessDefinition;
import org.flowable.engine.repository.ProcessDefinitionQuery;
@ -110,6 +111,20 @@ public class FlowDefinitionServiceImpl extends FlowServiceFactory implements IFl
}
*/
/**
*
* @param deployId
* @return
*/
@Override
public List<UserTask> findFlowNodes(String deployId){
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().deploymentId(deployId).singleResult();
//获得图片流
BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinition.getId());
List<UserTask> list = bpmnModel.getProcesses().get(0).findFlowElementsOfType(UserTask.class);
return list;
}
/**
*
*

View File

@ -1,19 +1,26 @@
package com.yanzhu.manage.controller;
import com.yanzhu.common.core.constant.CacheConstants;
import com.yanzhu.common.core.enums.DataSourceEnuns;
import com.yanzhu.common.core.utils.DateUtils;
import com.yanzhu.common.core.utils.poi.ExcelUtil;
import com.yanzhu.common.core.web.controller.BaseController;
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.RequiresPermissions;
import com.yanzhu.common.security.utils.SecurityUtils;
import com.yanzhu.manage.domain.BasSignet;
import com.yanzhu.manage.domain.ProProjectInfo;
import com.yanzhu.manage.service.IBasSignetService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Objects;
/**
* Controller
@ -25,6 +32,9 @@ import java.util.List;
@RequestMapping("/basSignet")
public class BasSignetController extends BaseController
{
@Autowired
private RedisService redisService;
@Autowired
private IBasSignetService basSignetService;
@ -40,6 +50,44 @@ public class BasSignetController extends BaseController
return getDataTable(list);
}
/**
*
*/
@GetMapping("/findUserSignList/{proId}")
public AjaxResult findUserSignList(@PathVariable("proId") Long proId)
{
BasSignet basSignet = new BasSignet();
basSignet.setProjectId(proId);
basSignet.setUserId(SecurityUtils.getUserId());
List<BasSignet> list = basSignetService.selectBasSignetList(basSignet);
return success(list);
}
/**
*
*/
@PostMapping("/submitUserSign")
public AjaxResult submitUserSign(@RequestBody BasSignet pageBasSignet)
{
if(Objects.nonNull(pageBasSignet.getId())){
BasSignet basSignet = basSignetService.selectBasSignetById(pageBasSignet.getId());
basSignet.setSignetPath(pageBasSignet.getSignetPath()+".sign.png.min.png");
basSignet.setUpdateBy(DataSourceEnuns.APP.getInfo());
basSignet.setUpdateTime(DateUtils.getNowDate());
return toAjax(basSignetService.updateBasSignet(basSignet));
}else{
ProProjectInfo proProjectInfo = redisService.getCacheObject(CacheConstants.PRO_PROJECT+pageBasSignet.getProjectId());
BasSignet basSignet = new BasSignet();
basSignet.setComId(proProjectInfo.getComId());
basSignet.setProjectId(proProjectInfo.getId());
basSignet.setUserId(SecurityUtils.getUserId());
basSignet.setSignetPath(pageBasSignet.getSignetPath()+".sign.png.min.png");
basSignet.setCreateBy(DataSourceEnuns.APP.getInfo());
basSignet.setCreateTime(DateUtils.getNowDate());
return toAjax(basSignetService.insertBasSignet(basSignet));
}
}
/**
*
*/

View File

@ -1,6 +1,9 @@
package com.yanzhu.manage.controller;
import com.yanzhu.common.core.constant.Constants;
import com.yanzhu.common.core.domain.R;
import com.yanzhu.common.core.utils.PageUtils;
import com.yanzhu.common.core.utils.StringUtils;
import com.yanzhu.common.core.utils.bean.BeanUtils;
import com.yanzhu.common.core.utils.poi.ExcelUtil;
import com.yanzhu.common.core.web.controller.BaseController;
@ -8,8 +11,10 @@ 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;
import com.yanzhu.manage.domain.ProProjectInfo;
import com.yanzhu.manage.service.IProProjectInfoService;
import org.springframework.beans.factory.annotation.Autowired;
@ -18,6 +23,7 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
/**
* Controller
@ -29,6 +35,9 @@ import java.util.Map;
@RequestMapping("/proProjectInfo")
public class ProProjectInfoController extends BaseController
{
@Autowired
private RedisService redisService;
@Autowired
private IProProjectInfoService proProjectInfoService;
@ -123,7 +132,13 @@ public class ProProjectInfoController extends BaseController
public TableDataInfo findMyProjectList(ProProjectInfo proProjectInfo)
{
startPage();
List<ProProjectInfo> list = proProjectInfoService.selectProProjectInfoList(proProjectInfo);
String key="proProjectInfo_findMyProjectList-"+ PageUtils.getLocalPage().getPageNum()+"-"+PageUtils.getLocalPage().getPageSize()+"-"+SecurityUtils.getUserId()+"-"+proProjectInfo.getProjectName();
List<ProProjectInfo> list = redisService.getCacheObject(key);
if(StringUtils.isNotEmpty(list)){
return getDataTable(list);
}
list = proProjectInfoService.selectProProjectInfoList(proProjectInfo);
redisService.setCacheObject(key, list, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
return getDataTable(list);
}

View File

@ -0,0 +1,58 @@
package com.yanzhu.manage.controller.wechat;
import com.yanzhu.common.core.constant.Constants;
import com.yanzhu.common.core.web.controller.BaseController;
import com.yanzhu.common.core.web.domain.AjaxResult;
import com.yanzhu.common.redis.service.RedisService;
import com.yanzhu.common.security.utils.SecurityUtils;
import com.yanzhu.manage.domain.WxMenuConfig;
import com.yanzhu.manage.service.IWxMenuConfigService;
import com.yanzhu.system.api.domain.SysUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.concurrent.TimeUnit;
/**
* Controller
*
* @author JiangYuQi
* @date 2024-08-25
*/
@RestController
@RequestMapping("/wxPublic")
public class WXPublicController extends BaseController {
@Autowired
private RedisService redisService;
@Autowired
private IWxMenuConfigService wxMenuConfigService;
/**
*
* @param menuType
* @return
*/
@GetMapping("/v1/findUserMenuList/{proId}")
public AjaxResult findUserMenuList(@PathVariable("proId") Long proId, String menuType){
//设置缓存
SysUser sysUser = SecurityUtils.getLoginUser().getSysUser();
String key="wxPublic_findUserMenuList-"+sysUser.getUserId()+"-"+proId+"-"+menuType;
Object obj=redisService.getCacheObject(key);
if(obj!=null){
return success(obj);
}
WxMenuConfig query = new WxMenuConfig();
query.setActiveProjectId(proId);
query.setMenuType(menuType);
query.setCurrentUserId(sysUser.getUserId());
List<WxMenuConfig> list = wxMenuConfigService.findUserMenuList(query);
redisService.setCacheObject(key, list, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
return success(list);
}
}

View File

@ -0,0 +1,61 @@
package com.yanzhu.manage.service;
import java.util.List;
import com.yanzhu.manage.domain.WxMenuConfigRole;
/**
* Service
*
* @author JiangYuQi
* @date 2024-12-29
*/
public interface IWxMenuConfigRoleService
{
/**
*
*
* @param smcid
* @return
*/
public WxMenuConfigRole selectWxMenuConfigRoleBySmcid(Long smcid);
/**
*
*
* @param wxMenuConfigRole
* @return
*/
public List<WxMenuConfigRole> selectWxMenuConfigRoleList(WxMenuConfigRole wxMenuConfigRole);
/**
*
*
* @param wxMenuConfigRole
* @return
*/
public int insertWxMenuConfigRole(WxMenuConfigRole wxMenuConfigRole);
/**
*
*
* @param wxMenuConfigRole
* @return
*/
public int updateWxMenuConfigRole(WxMenuConfigRole wxMenuConfigRole);
/**
*
*
* @param smcids
* @return
*/
public int deleteWxMenuConfigRoleBySmcids(Long[] smcids);
/**
*
*
* @param smcid
* @return
*/
public int deleteWxMenuConfigRoleBySmcid(Long smcid);
}

View File

@ -0,0 +1,69 @@
package com.yanzhu.manage.service;
import java.util.List;
import com.yanzhu.manage.domain.WxMenuConfig;
/**
* Service
*
* @author JiangYuQi
* @date 2024-12-29
*/
public interface IWxMenuConfigService
{
/**
*
*
* @param id
* @return
*/
public WxMenuConfig selectWxMenuConfigById(Long id);
/**
*
*
* @param wxMenuConfig
* @return
*/
public List<WxMenuConfig> selectWxMenuConfigList(WxMenuConfig wxMenuConfig);
/**
*
*
* @param wxMenuConfig
* @return
*/
public int insertWxMenuConfig(WxMenuConfig wxMenuConfig);
/**
*
*
* @param wxMenuConfig
* @return
*/
public int updateWxMenuConfig(WxMenuConfig wxMenuConfig);
/**
*
*
* @param ids
* @return
*/
public int deleteWxMenuConfigByIds(Long[] ids);
/**
*
*
* @param id
* @return
*/
public int deleteWxMenuConfigById(Long id);
/**
*
*
* @param wxMenuConfig
* @return
*/
public List<WxMenuConfig> findUserMenuList(WxMenuConfig wxMenuConfig);
}

View File

@ -10,6 +10,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Objects;
/**
* Service
@ -44,8 +45,10 @@ public class BasSignetServiceImpl implements IBasSignetService
@Override
public List<BasSignet> selectBasSignetList(BasSignet basSignet)
{
basSignet.setActiveComId(SecurityUtils.getLoginUser().getProjectDeptId());
basSignet.setActiveProjectId(SecurityUtils.getLoginUser().getProjectId());
if(Objects.isNull(basSignet.getProjectId())){
basSignet.setActiveComId(SecurityUtils.getLoginUser().getProjectDeptId());
basSignet.setActiveProjectId(SecurityUtils.getLoginUser().getProjectId());
}
return basSignetMapper.selectBasSignetList(basSignet);
}

View File

@ -0,0 +1,93 @@
package com.yanzhu.manage.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.yanzhu.manage.mapper.WxMenuConfigRoleMapper;
import com.yanzhu.manage.domain.WxMenuConfigRole;
import com.yanzhu.manage.service.IWxMenuConfigRoleService;
/**
* Service
*
* @author JiangYuQi
* @date 2024-12-29
*/
@Service
public class WxMenuConfigRoleServiceImpl implements IWxMenuConfigRoleService
{
@Autowired
private WxMenuConfigRoleMapper wxMenuConfigRoleMapper;
/**
*
*
* @param smcid
* @return
*/
@Override
public WxMenuConfigRole selectWxMenuConfigRoleBySmcid(Long smcid)
{
return wxMenuConfigRoleMapper.selectWxMenuConfigRoleBySmcid(smcid);
}
/**
*
*
* @param wxMenuConfigRole
* @return
*/
@Override
public List<WxMenuConfigRole> selectWxMenuConfigRoleList(WxMenuConfigRole wxMenuConfigRole)
{
return wxMenuConfigRoleMapper.selectWxMenuConfigRoleList(wxMenuConfigRole);
}
/**
*
*
* @param wxMenuConfigRole
* @return
*/
@Override
public int insertWxMenuConfigRole(WxMenuConfigRole wxMenuConfigRole)
{
return wxMenuConfigRoleMapper.insertWxMenuConfigRole(wxMenuConfigRole);
}
/**
*
*
* @param wxMenuConfigRole
* @return
*/
@Override
public int updateWxMenuConfigRole(WxMenuConfigRole wxMenuConfigRole)
{
return wxMenuConfigRoleMapper.updateWxMenuConfigRole(wxMenuConfigRole);
}
/**
*
*
* @param smcids
* @return
*/
@Override
public int deleteWxMenuConfigRoleBySmcids(Long[] smcids)
{
return wxMenuConfigRoleMapper.deleteWxMenuConfigRoleBySmcids(smcids);
}
/**
*
*
* @param smcid
* @return
*/
@Override
public int deleteWxMenuConfigRoleBySmcid(Long smcid)
{
return wxMenuConfigRoleMapper.deleteWxMenuConfigRoleBySmcid(smcid);
}
}

View File

@ -0,0 +1,107 @@
package com.yanzhu.manage.service.impl;
import java.util.List;
import com.yanzhu.common.core.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.yanzhu.manage.mapper.WxMenuConfigMapper;
import com.yanzhu.manage.domain.WxMenuConfig;
import com.yanzhu.manage.service.IWxMenuConfigService;
/**
* Service
*
* @author JiangYuQi
* @date 2024-12-29
*/
@Service
public class WxMenuConfigServiceImpl implements IWxMenuConfigService
{
@Autowired
private WxMenuConfigMapper wxMenuConfigMapper;
/**
*
*
* @param id
* @return
*/
@Override
public WxMenuConfig selectWxMenuConfigById(Long id)
{
return wxMenuConfigMapper.selectWxMenuConfigById(id);
}
/**
*
*
* @param wxMenuConfig
* @return
*/
@Override
public List<WxMenuConfig> selectWxMenuConfigList(WxMenuConfig wxMenuConfig)
{
return wxMenuConfigMapper.selectWxMenuConfigList(wxMenuConfig);
}
/**
*
*
* @param wxMenuConfig
* @return
*/
@Override
public int insertWxMenuConfig(WxMenuConfig wxMenuConfig)
{
wxMenuConfig.setCreateTime(DateUtils.getNowDate());
return wxMenuConfigMapper.insertWxMenuConfig(wxMenuConfig);
}
/**
*
*
* @param wxMenuConfig
* @return
*/
@Override
public int updateWxMenuConfig(WxMenuConfig wxMenuConfig)
{
return wxMenuConfigMapper.updateWxMenuConfig(wxMenuConfig);
}
/**
*
*
* @param ids
* @return
*/
@Override
public int deleteWxMenuConfigByIds(Long[] ids)
{
return wxMenuConfigMapper.deleteWxMenuConfigByIds(ids);
}
/**
*
*
* @param id
* @return
*/
@Override
public int deleteWxMenuConfigById(Long id)
{
return wxMenuConfigMapper.deleteWxMenuConfigById(id);
}
/**
*
*
* @param wxMenuConfig
* @return
*/
@Override
public List<WxMenuConfig> findUserMenuList(WxMenuConfig wxMenuConfig){
return wxMenuConfigMapper.findUserMenuList(wxMenuConfig);
}
}

View File

@ -21,6 +21,7 @@ import com.yanzhu.system.api.domain.SysUser;
import com.yanzhu.system.api.model.LoginUser;
import com.yanzhu.system.domain.vo.TreeSelect;
import com.yanzhu.system.service.*;
import com.yanzhu.system.vo.AlertUserPassVo;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.ArrayUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -29,6 +30,7 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.util.List;
import java.util.Map;
@ -321,6 +323,15 @@ public class SysUserController extends BaseController {
return toAjax(userService.resetPwd(user));
}
/**
*
*/
@Log(title = "修改密码", businessType = BusinessType.UPDATE)
@PostMapping("/updatePwd")
public AjaxResult updatePwd(@RequestBody @Valid AlertUserPassVo vo) {
return toAjax(userService.updataUserPassWord(vo));
}
/**
*
*/

View File

@ -1,6 +1,7 @@
package com.yanzhu.system.service;
import com.yanzhu.system.api.domain.SysUser;
import com.yanzhu.system.vo.AlertUserPassVo;
import java.util.List;
import java.util.Map;
@ -239,4 +240,11 @@ public interface ISysUserService
* @return
*/
public List<Map<String, Object>> selectProjectsByUserId(Long userId);
/**
*
* @param alertUserPassVo
* @return
*/
public int updataUserPassWord(AlertUserPassVo alertUserPassVo);
}

View File

@ -12,6 +12,7 @@ import com.yanzhu.system.domain.SysPost;
import com.yanzhu.system.domain.SysUserPost;
import com.yanzhu.system.domain.SysUserRole;
import com.yanzhu.system.mapper.*;
import com.yanzhu.system.vo.AlertUserPassVo;
import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
@ -652,4 +653,16 @@ public class SysUserServiceImpl implements ISysUserService
return successMsg.toString();
}
/**
*
* @param alertUserPassVo
* @return
*/
@Override
public int updataUserPassWord(AlertUserPassVo alertUserPassVo){
SysUser sysUser = userMapper.selectUserByUserId(SecurityUtils.getUserId());
sysUser.setPassword(SecurityUtils.encryptPassword(alertUserPassVo.getPassword()));
return userMapper.updateUser(sysUser);
}
}

View File

@ -0,0 +1,55 @@
package com.yanzhu.system.vo;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
/**
*
*/
@Data
public class AlertUserPassVo {
private static final long serialVersionUID = 1L;
/**
*
*/
public static final String MOBILE_PHONE_NUMBER_PATTERN = "^0{0,1}(13[0-9]|15[0-9]|14[0-9]|18[0-9])[0-9]{8}$";
/**
*
* @NotBlank(message = "登录账号不能为空")
* @Pattern(regexp = "^0{0,1}(13[0-9]|15[0-9]|14[0-9]|18[0-9])[0-9]{8}$", message = "手机号格式异常")
*/
private String loginName;
@NotBlank(message = "登录密码不能为空")
@Size(min = 6, max = 20, message = "登录密码格式异常")
private String password;
@NotBlank(message = "确认密码不能为空")
@Size(min = 6, max = 20, message = "确认密码格式异常")
private String confPass;
/**
*
* @NotBlank(message = "旧密码不能为空")
* @Size(min = 6, max = 20, message = "旧密码格式异常")
*/
private String oldPass;
/**
* @Pattern(regexp = "^[0-9]{6}$", message = "验证码格式异常")
*/
private String code;
/**
*
* @NotBlank(message = "来源不能为空")
* @Pattern(regexp = "r|u", message = "来源异常")
*/
private String source;
}

View File

@ -3,7 +3,7 @@ import {request} from '../utils/request'
// 获取流程申请类型
export function myDefinitionList(data) {
return request({
url: '/wxApi/flowTask/myDefinitionList',
url: '/flowable/businessKey/myDefinitionList',
method: 'get',
data: data
})
@ -12,7 +12,7 @@ export function myDefinitionList(data) {
// 启动流程实例
export function startProcessInstance(data) {
return request({
url: '/wxApi/flowTask/startProcessInstance',
url: '/flowable/businessKey/startProcessInstance',
method: 'post',
data: data
})
@ -21,7 +21,7 @@ export function startProcessInstance(data) {
// 查询流程节点
export function readNotes(deployId) {
return request({
url: '/wxApi/flowTask/readNotes/'+deployId,
url: '/flowable/businessKey/readNotes/'+deployId,
method: 'get'
})
}
@ -29,7 +29,7 @@ export function readNotes(deployId) {
// 查询流程节点
export function readDeployNotes(deployId) {
return request({
url: '/wxApi/flowTask/readDeployNotes/'+deployId,
url: '/flowable/businessKey/readDeployNotes/'+deployId,
method: 'get'
})
}
@ -37,7 +37,7 @@ export function readDeployNotes(deployId) {
// 取消流程申请
export function stopProcess(data) {
return request({
url: '/wxApi/flowTask/stopProcess',
url: '/flowable/businessKey/stopProcess',
method: 'post',
data: data
})
@ -46,7 +46,7 @@ export function stopProcess(data) {
// 撤回流程办理
export function revokeProcess(data) {
return request({
url: '/wxApi/flowTask/revokeProcess',
url: '/flowable/businessKey/revokeProcess',
method: 'post',
data: data
})
@ -55,7 +55,7 @@ export function revokeProcess(data) {
// 审批任务流程
export function complete(data) {
return request({
url: '/wxApi/flowTask/complete',
url: '/flowable/task/complete',
method: 'post',
data: data
})
@ -64,7 +64,7 @@ export function complete(data) {
// 驳回任务流程
export function reject(data) {
return request({
url: '/wxApi/flowTask/reject',
url: '/flowable/businessKey/reject',
method: 'post',
data: data
})
@ -73,7 +73,7 @@ export function reject(data) {
// 退回任务流程
export function returnTask(data) {
return request({
url: '/wxApi/flowTask/return',
url: '/flowable/task/return',
method: 'post',
data: data
})
@ -82,7 +82,7 @@ export function returnTask(data) {
// 委派任务流程
export function delegateTask(data) {
return request({
url: '/wxApi/flowTask/delegateTask',
url: '/flowable/businessKey/delegateTask',
method: 'post',
data: data
})
@ -91,7 +91,7 @@ export function delegateTask(data) {
// 转办任务流程
export function assignTask(data) {
return request({
url: '/wxApi/flowTask/assignTask',
url: '/flowable/businessKey/assignTask',
method: 'post',
data: data
})
@ -100,7 +100,7 @@ export function assignTask(data) {
// 删除流程实例
export function deleteInstance(instanceId) {
return request({
url: '/wxApi/flowTask/delete/'+instanceId,
url: '/flowable/businessKey/delete/'+instanceId,
method: 'get'
})
}
@ -108,7 +108,7 @@ export function deleteInstance(instanceId) {
// 获取所有可回退的节点
export function returnList(data) {
return request({
url: '/wxApi/flowTask/returnList',
url: '/flowable/task/returnList',
method: 'post',
data: data
})
@ -117,25 +117,34 @@ export function returnList(data) {
// 根据流程Id查询操作日志
export function findCommentByProcInsId(data) {
return request({
url: '/wxApi/flowTask/findCommentByProcInsId',
url: '/flowable/businessKey/findCommentByProcInsId',
method: 'get',
data: data
})
}
// 根据条件查询我的代办任务
export function myAwaitFlowTaskList(data) {
// 根据条件统计分包单位审批
export function quueryCount(query) {
return request({
url: '/wxApi/flowTask/myAwaitFlowTaskList',
method: 'post',
data: data
url: '/flowable/businessKey/queryCount',
method: 'get',
params: query
})
}
// 根据条件查询我的代办任务
export function myAwaitFlowTaskList(query) {
return request({
url: '/flowable/businessKey/myAwaitFlowTaskList',
method: 'get',
params: query
})
}
// 根据条件查询我的已办任务
export function myFinishedFlowTaskList(query) {
return request({
url: '/wxApi/flowTask/myFinishedFlowTaskList',
url: '/flowable/businessKey/myFinishedFlowTaskList',
method: 'get',
params: query
})
@ -144,7 +153,7 @@ export function myFinishedFlowTaskList(query) {
// 根据条件查询所有流申请
export function allInstanceList(data) {
return request({
url: '/wxApi/flowTask/allList',
url: '/flowable/businessKey/allList',
method: 'get',
data: data
})
@ -153,7 +162,7 @@ export function allInstanceList(data) {
// 根据条件查询所有流申请
export function myInstanceList(data) {
return request({
url: '/wxApi/flowTask/myList',
url: '/flowable/businessKey/myList',
method: 'get',
data: data
})
@ -162,7 +171,7 @@ export function myInstanceList(data) {
// 根据条件统计所有流程任务
export function queryTaskCount(data) {
return request({
url: '/wxApi/flowTask/queryCount',
url: '/flowable/businessKey/queryCount',
method: 'get',
data: data
})

View File

@ -38,7 +38,7 @@ export function maLogin(data) {
// 登录方法
export function updatePwd(data) {
return request({
url: '/wxApi/updatePwd',
url: '/system/user/updatePwd',
method: 'post',
data: data,
})
@ -48,7 +48,7 @@ export function updatePwd(data) {
export function loginOut() {
return request({
'url': '/auth/logout',
'method': 'get'
'method': 'delete'
})
}

View File

@ -27,6 +27,14 @@ export function findProSubDeptsInfo(proId, phoneNumber) {
})
}
// 查询项目参建单位信息
export function findProSubDeptsInfoById(id) {
return request({
url: '/manage/proProjectInfoSubdepts/' + id,
method: 'get'
})
}
// 查询项目参建人员信息
export function findProSubDeptsUser(proId, phoneNumber) {
return request({
@ -43,6 +51,14 @@ export function findProSubDeptsUserById(id) {
})
}
// 查询项目参建单位人员
export function findProSubDeptsUserInfoById(id) {
return request({
url: '/manage/proProjectInfoSubdeptsUsers/' + id,
method: 'get'
})
}
// 查询项目参建单位人员
export function findProSubDeptsUserByParams(proId) {
return request({

View File

@ -17,11 +17,27 @@ export function getUserInfo() {
}
// 查询用户菜单信息
export function selectRoleMenuList(data) {
export function findUserMenuList(proId,menuType) {
return request({
url: '/wxApi/publics/v1/selectRoleMenuList',
method: 'get',
data: data
url: '/manage/wxPublic/v1/findUserMenuList/'+proId+'?menuType='+menuType,
method: 'get'
})
}
// 查询用户签名信息
export function findUserSignList(proId) {
return request({
url: '/manage/basSignet/findUserSignList/'+proId,
method: 'get'
})
}
// 保存用户签名信息
export function submitUserSign(data) {
return request({
url: '/manage/basSignet/submitUserSign',
method: 'post',
data:data
})
}
@ -64,4 +80,5 @@ export function findProjectApplyData(id){
url: '/wxApi/publics/projectApply/'+id,
method: 'get'
})
}
}

View File

@ -26,6 +26,7 @@ import {
App({
globalData: {
userData: null,
subDeptUserData: null,
useProjectId: '',
useProjectName: '',
searchProject: {},

View File

@ -1,7 +1,6 @@
{
"pages": [
"pages/login/login",
"pages/updatePwd/index",
"pages/project_flowable/initTask/index",
"pages/project_flowable/myFlowDefinition/index",
"pages/project_flowable/await/index",
@ -10,12 +9,13 @@
"pages/project_flowable/detailTask/index",
"pages/project_flowable/editTask/index",
"pages/project_flowable/myProcessIns/index",
"pages/project_flowable/subDepts/index",
"pages/project_flowable/subDeptsUsers/index",
"pages/project_info/index",
"pages/project_list/index",
"pages/project_check/list/index",
"pages/project_check/edit/index",
"pages/project_check/info/index",
"pages/project_qr/index"
"pages/project_more/index",
"pages/project_qr/index",
"pages/sign_mags/index"
],
"usingComponents": {
"van-row": "@vant/weapp/row",
@ -46,7 +46,7 @@
"voucher-date": "pages/components/voucher-date/index",
"voucher-datetime": "pages/components/voucher-datetime/index",
"file-uploader": "pages/components/file-uploader/index",
"file-uploader-all":"pages/components/file-uploader-all/index",
"file-uploader-all": "pages/components/file-uploader-all/index",
"project-select": "pages/components/project-select/index",
"safety-pie-chart": "./components/safety-pie-chart/index",
"safety-pie-charts": "./components/safety-pie-charts/index",

View File

@ -6,21 +6,20 @@ Component({
* 组件的属性列表
*/
properties: {
chartId:{
chartId: {
type: String
},
data:{
data: {
type: Array
},
height:{
height: {
type: Number
}
},
observers: {
data: function (val) {
console.log(val)
this.initChart()
this.initChart()
},
},
/**
@ -30,45 +29,50 @@ Component({
ec: {
lazyLoad: true
},
chart:undefined,
chart: undefined,
},
lifetimes: {
created: function(){
//在组件实例刚刚被创建时执行,注意此时不能调用 setData
created: function () {
//在组件实例刚刚被创建时执行,注意此时不能调用 setData
},
attached: function () {
//在组件实例进入页面节点树时执行
},
ready: function () {
// 在组件在视图层布局完成后执行
this.initChart();
},
detached: function () {
// 在组件实例被从页面节点树移除时执行
},
},
/**
* 组件的方法列表
*/
methods: {
initChart(){
var id ='#' + this.data.chartId;
initChart() {
var id = '#' + this.data.chartId;
this.component = this.selectComponent(id);
this.component.init((canvas, width, height, dpr) => {
let chart = echarts.init(canvas, null, {
width: width,
height: height,
devicePixelRatio: dpr
if(this.component!=null){
this.component.init((canvas, width, height, dpr) => {
let chart = echarts.init(canvas, null, {
width: width,
height: height,
devicePixelRatio: dpr
})
chart.setOption(this.getData());
return chart;
})
chart.setOption(this.getData());
return chart;
})
}
},
getData() {
var data = this.data.data
var max = data[0].total
var nameData = [];
var totalData = []
@ -79,20 +83,20 @@ Component({
var notProp = []
var unitData = []
for (let i = data.length-1; i >=0 ; i--) {
for (let i = data.length - 1; i >= 0; i--) {
nameData.push(data[i].name);
totalData.push(data[i].total)
unitData.push(data[i].unit)
background.push(100);
yesMonitor.push(data[i].yesMonitor);
notMonitor.push(data[i].notMonitor);
yesProp.push((data[i].yesMonitor/max)*100)
notProp.push((data[i].notMonitor/max)*100)
yesProp.push((data[i].yesMonitor / max) * 100)
notProp.push((data[i].notMonitor / max) * 100)
}
var legend = ["已监控", "未监控"]
var option = {
var option = {
grid: {
//图表的位置
top: "0%",
@ -105,45 +109,44 @@ Component({
top: "0",
//icon: "circle",
itemWidth: 10,
itemHeight:10,
itemHeight: 10,
itemGap: 8,
textStyle: {
fontSize: 12,
color:'#c6d9fa'
color: '#c6d9fa'
},
data: legend,
},
xAxis: [{
show: false,
},
show: false,
},
//由于下边X轴已经是百分比刻度了,所以需要在顶部加一个X轴,刻度是金额,也隐藏掉
{
show: false,
}
],
yAxis: [
{
type: 'category',
axisLabel: {
show: false, //让Y轴数据不显示
},
itemStyle: {
yAxis: [{
type: 'category',
axisLabel: {
show: false, //让Y轴数据不显示
},
itemStyle: {
},
axisTick: {
show: false, //隐藏Y轴刻度
},
axisLine: {
show: false, //隐藏Y轴线段
},
data: [],
},{
show: false,
data: [],
axisLine: {
show: false
}
}],
},
axisTick: {
show: false, //隐藏Y轴刻度
},
axisLine: {
show: false, //隐藏Y轴线段
},
data: [],
}, {
show: false,
data: [],
axisLine: {
show: false
}
}],
series: [
//数据条--------------------我是分割线君------------------------------//
{
@ -166,43 +169,43 @@ Component({
rich: { //富文本
prop: { //自定义颜色
color: '#c6d9fa',
fontSize:'14',
fontSize: '14',
},
unit:{
unit: {
color: '#6c829a',
fontSize:'12',
fontSize: '12',
},
yes:{
yes: {
color: '#55adf7',
fontSize:'14',
fontSize: '14',
},
not:{
not: {
color: '#4677fa',
fontSize:'14',
fontSize: '14',
},
index:{
index: {
color: '#fcbc02',
fontStyle: 'italic',
padding:[0,0,0,5],
fontSize:'14',
padding: [0, 0, 0, 5],
fontSize: '14',
},
name: {
width: 120,
color: '#c6d9fa',
padding:[0,0,0,5],
fontSize:'14',
padding: [0, 0, 0, 5],
fontSize: '14',
},
color:{
color: {
color: '#8ca2be',
fontSize:'14',
fontSize: '14',
},
},
formatter: function(data) {
formatter: function (data) {
//富文本固定格式{colorName|这里填你想要写的内容}
//return '{arrow|}'
return '{index|No.'+(nameData.length-data.dataIndex)+'}{name|' + nameData[data.dataIndex] + '}{prop|' + totalData[data.dataIndex] + '}{unit| '+unitData[data.dataIndex]+'}{prop|} {yes|'+yesMonitor[data.dataIndex]+'}{unit| '+unitData[data.dataIndex]+'/}{not|'+notMonitor[data.dataIndex]+'}{unit| '+unitData[data.dataIndex]+'}{prop|} ';
return '{index|No.' + (nameData.length - data.dataIndex) + '}{name|' + nameData[data.dataIndex] + '}{prop|' + totalData[data.dataIndex] + '}{unit| ' + unitData[data.dataIndex] + '}{prop|} {yes|' + yesMonitor[data.dataIndex] + '}{unit| ' + unitData[data.dataIndex] + '/}{not|' + notMonitor[data.dataIndex] + '}{unit| ' + unitData[data.dataIndex] + '}{prop|} ';
},
}
},
@ -223,41 +226,42 @@ Component({
}
},
data: background
},
},
{
type: 'bar',
//name:legend[0],
stack: '1',
legendHoverLink: false,
barWidth: 6,
itemStyle: {
normal: {
color: '#52adf4'
type: 'bar',
//name:legend[0],
stack: '1',
legendHoverLink: false,
barWidth: 6,
itemStyle: {
normal: {
color: '#52adf4'
},
emphasis: {
color: '#52adf4'
}
},
emphasis: {
color: '#52adf4'
}
},
data: yesProp
}, {
type: 'bar',
//name:legend[1],
stack: '1',
legendHoverLink: false,
barWidth: 6,
itemStyle: {
normal: {
color: '#4677ff'
data: yesProp
}, {
type: 'bar',
//name:legend[1],
stack: '1',
legendHoverLink: false,
barWidth: 6,
itemStyle: {
normal: {
color: '#4677ff'
},
emphasis: {
color: '#4677ff'
}
},
emphasis: {
color: '#4677ff'
}
},
data: notProp
}]
data: notProp
}
]
};
return option;
}
}
})
})

View File

@ -29,18 +29,11 @@ import {
},
created() {
let that = this;
//获取缓存数据
wx.getStorage({
key: 'userinfo',
success: function (res) {
that.setData({
userData: res.data,
loginName: res.data.loginName,
msgOpenId: res.data.msgOpenId || "",
})
}
})
this.setData({
userData: app.globalData.userData,
loginName: app.globalData.userData.userName,
msgOpenId: "",
})
},
/**
* 组件的方法列表
@ -125,14 +118,13 @@ import {
//退出登录
loginOut: function () {
loginOut({}).then(res => {
loginOut().then(res => {
removeToken();
wx.clearStorageSync();
wx.redirectTo({
url: '../login/login'
})
});
wx.clearStorageSync();
wx.setStorageSync('isReload', "1")
wx.redirectTo({
url: '../login/index',
})
},
seeTap1() {
@ -167,7 +159,7 @@ import {
*/
submit: function () {
var that = this;
if (that.data.oldPsw == '') {
if (false && that.data.oldPsw == '') {
app.toast("请输入旧密码!");
return;
}
@ -179,7 +171,7 @@ import {
app.toast("两次密码输入不一致!");
return;
}
if (that.data.oldPsw.length < 6) {
if (false && that.data.oldPsw.length < 6) {
app.toast("请输入旧密码长度 [6-20]位字符!");
return;
}
@ -201,14 +193,15 @@ import {
updatePwd(data).then(res =>{
if(res.code==200){
app.toast("密码修改成功,请重新登录!",800);
removeToken();
wx.clearStorageSync();
wx.setStorageSync('isReload', "1");
setTimeout(()=>{
wx.redirectTo({
url: '../login/index',
});
},500)
loginOut().then(res =>{
removeToken();
wx.clearStorageSync();
setTimeout(()=>{
wx.redirectTo({
url: '../login/login'
});
},500)
});
}
});
},

View File

@ -6,7 +6,7 @@
<view class="left_max">
<van-row class="demo clearfix">
<van-col span="24">
<view class="left_info_dept">{{userData.deptName}}</view>
<view class="left_info_dept">{{userData.dept?userData.dept.deptName:userData.remark}}</view>
</van-col>
<van-col span="10">
<view class="left_head">
@ -16,17 +16,17 @@
<van-col span="14">
<view class="left_info">
<view class="left_info_name">{{userData.nickName}}</view>
<view class="left_info_name">{{userData.loginName}}</view>
<view wx:if="{{msgOpenId==''}}" class="left_info_name" style="color: #F56C6C;display:flex;font-weight: 600;"><van-icon name="clear" />消息未授权</view>
<view wx:if="{{msgOpenId!=''}}" class="left_info_name" style="color: #38cf4c;display:flex;font-weight: 600;"><van-icon name="checked" />消息已授权</view>
<view class="left_info_name">{{userData.userName}}</view>
<view wx:if="{{false}}" class="left_info_name" style="color: #F56C6C;display:flex;font-weight: 600;"><van-icon name="clear" />消息未授权</view>
<view wx:if="{{false}}" class="left_info_name" style="color: #38cf4c;display:flex;font-weight: 600;"><van-icon name="checked" />消息已授权</view>
</view>
</van-col>
</van-row>
<view class="left_manage_min" wx:if="{{true}}">
<view class="left_manage_min" wx:if="{{false}}">
<view class="message-title">关注公众号才能成功开启消息通知</view>
</view>
<button wx:if="{{true}}" type="default" size="default" style="margin-top: 40rpx;background-color: #513ea7;color: #FFF;" bindtap="bindingBuild">立即关注公众号</button>
<view class="left_manage_min" wx:if="{{true}}">
<button wx:if="{{false}}" type="default" size="default" style="margin-top: 40rpx;background-color: #513ea7;color: #FFF;" bindtap="bindingBuild">立即关注公众号</button>
<view class="left_manage_min" wx:if="{{false}}">
<view class="left_manage" bindtap="binding">
<image src="/images/img_1.png" class="left_icon"></image>
<text class="left_binding">授权消息通知</text>
@ -56,7 +56,7 @@
<image src="https://szgcwx.jhncidg.com/staticFiles/img/yanzhu_logo_blue.png"></image>
</view>
<view class="inspect_info">
<view class="inspect_info_list">
<view class="inspect_info_list" wx:if="{{false}}">
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">旧密码</view>
<view class="inspect_info_content">
<input placeholder="请输入旧密码" placeholder-style="color:#6777aa;" class="inspect_input_fill_in" password="{{showOldPass}}" maxlength="20" model:value="{{oldPsw}}" />

View File

@ -1,328 +0,0 @@
import {
findAllByCategory
} from '../../../api/publics'
import {
addApplyDetail
} from '../../../api/projectApply'
const app = getApp()
Page({
/**
* 页面的初始数据
*/
data: {
options: {},
dataList: [],
detailDataList: [],
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
this.setData({
options: options,
})
this.findMyDeptAssetsList();
this.newApplyDetail();
},
/**
* 栏目触发事件
*/
onClickNav(e) {
var index = e.currentTarget.dataset.index
let list = this.data.detailDataList;
list[index].activeId = null;
list[index].mainActiveIndex = e.detail.index;
this.setData({
detailDataList: list
})
console.log(e.detail.index, this.data.dataList);
},
/**
* 选项触发事件
*/
onClickItem(e) {
var index = e.currentTarget.dataset.index
let list = this.data.detailDataList;
list[index].detailId = e.detail.id;
list[index].detailName = e.detail.text;
list[index].showDetailsName = e.detail.detailName;
if (e.detail.units) {
let itemList = [];
e.detail.units.split(',').forEach((item, idx) => {
if (idx == 0) {
list[index].useUnitIndex = idx;
list[index].useUnit = item;
}
itemList.push({
id: idx,
text: item
});
});
list[index].assetsUnits = itemList;
}
list[index].activeId = e.detail.id;
list[index].showDetailsPopup = false;
this.setData({
detailDataList: list
})
},
//新增问题
newApplyDetail() {
var data = this.data.detailDataList
data.push({
detailId: '',
detailName: '',
showDetailsName: '',
showDetailsPopup: false,
mainActiveIndex: 0,
activeId: [],
useUnit: "",
useUnitIndex: "",
assetsUnits: [],
applyNumber: "",
assetsVersion: "",
useReason: ""
})
this.setData({
detailDataList: data
})
},
/**
* 删除申请详情
* @param {*} e
*/
delApplyDetail(e) {
var index = e.currentTarget.dataset.index
var data = this.data.detailDataList
data.splice(index, 1);
this.setData({
detailDataList: data
})
},
//保存
onSave() {
let {
detailDataList,
} = this.data;
//数据效验
if (detailDataList.length > 0) {
for (let i = 0; i < detailDataList.length; i++) {
if (!detailDataList[i].detailId || !detailDataList[i].detailName || detailDataList[i].activeId.length == 0) {
app.toast("请选择申请明细!")
return false;
}
if (!detailDataList[i].applyNumber) {
app.toast("请填写申请数量!")
return false;
}
if (!detailDataList[i].useUnit) {
app.toast("请选择单位名称!")
return false;
}
}
} else {
app.toast("请添加申请明细!")
}
let that = this;
wx.showModal({
title: '提示',
content: '是否确认添加申请内容?',
success: function (sm) {
if (sm.confirm) {
that.submit()
} else if (sm.cancel) {
console.log('用户点击取消');
}
}
})
},
submit() {
let {
options,
detailDataList,
dataList
} = this.data;
let applyDetailList = [];
detailDataList.forEach(detail => {
applyDetailList.push({
superTypeKey: options.applyType,
typeId: dataList[detail.mainActiveIndex].id,
typeName: dataList[detail.mainActiveIndex].name,
assetsId: detail.detailId,
assetsName: detail.detailName,
number: detail.applyNumber,
assetsUnit: detail.useUnit,
assetsVersion: detail.assetsVersion,
useReason: detail.useReason,
pushType:3,
});
});
let params = {
id: options.id,
proProjectApplyDetailList: applyDetailList
}
addApplyDetail(params).then(res => {
if (res.code == '200') {
app.toast("添加申请内容成功!", 'success');
//跳转页面
wx.redirectTo({
url: '../info/index?businessKey='+this.data.options.id,
})
}
});
},
//查询部门资产列表信息
findMyDeptAssetsList() {
findAllByCategory(this.data.options.applyType).then(res => {
if (res.code == '200') {
let list = [];
res.data.forEach(item => {
let children = [];
item.childrenAssetsTypeList.forEach(child => {
children.push({
id: child.id,
text: child.name,
units: child.unit,
detailName: item.name + ' > ' + child.name
});
})
list.push({
id: item.id,
text: item.name,
children: children
});
});
this.setData({
dataList: list
})
}
});
},
//输入申请数量
onInputNumber(e) {
var index = e.currentTarget.dataset.index
let list = this.data.detailDataList;
let value = e.detail.value;
list[index].applyNumber = value;
this.setData({
detailDataList: list
})
},
//选择资产单位
onSelectUnit(e) {
var index = e.currentTarget.dataset.index
let list = this.data.detailDataList;
list[index].useUnit = e.detail.text;
list[index].useUnitIndex = e.detail.id;
this.setData({
detailDataList: list
})
},
//输入规格型号
onInputVersion(e) {
var index = e.currentTarget.dataset.index
let list = this.data.detailDataList;
list[index].assetsVersion = e.detail.value;
this.setData({
detailDataList: list
})
},
//输入使用说明
onInputUseReason(e) {
var index = e.currentTarget.dataset.index
let list = this.data.detailDataList;
list[index].useReason = e.detail.value;
this.setData({
detailDataList: list
})
},
//关闭申请明细选择
onShowPopup(e) {
var index = e.currentTarget.dataset.index
let list = this.data.detailDataList;
list[index].showDetailsPopup = true;
this.setData({
detailDataList: list
})
},
//关闭申请明细选择
onClosePopup(e) {
var index = e.currentTarget.dataset.index
let list = this.data.detailDataList;
list[index].showDetailsPopup = false;
this.setData({
detailDataList: list
})
},
returnToPage: function () {
/*关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面*/
wx.redirectTo({
url: '../info/index?businessKey='+this.data.options.id,
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})

View File

@ -1,7 +0,0 @@
{
"usingComponents": {
"van-popup": "@vant/weapp/popup",
"van-tree-select": "@vant/weapp/tree-select/index"
},
"navigationStyle":"custom"
}

View File

@ -1,59 +0,0 @@
<wxs module="format" src="/utils/format.wxs"></wxs>
<view class="header_title">
<view class="header_title_row">
<van-row>
<van-col span="4">
<view class="header_img" bindtap="returnToPage">
<image src="/images/left.png"></image>
</view>
</van-col>
<van-col span="16">
<view class="header_name">新增申请明细</view>
</van-col>
</van-row>
</view>
</view>
<view class="max_content">
<view class="inspect_info" wx:for="{{detailDataList}}" wx:key="index">
<view class="module_title module_title_flex">
<view class="text_active">申请明细 {{ format.indexNumFormat(index) }}</view>
<view class="module_see_info_delete" wx:if="{{index != 0}}" bindtap="delApplyDetail" data-index="{{index}}">
<van-icon name="delete" /> 删除
</view>
</view>
<view class="inspect_info_list">
<input placeholder="请选择申请明细" placeholder-style="color:#6777aa;" class="inspect_input_fill_in" value="{{item.showDetailsName}}" data-index="{{index}}" bindtap="onShowPopup" disabled="disabled" />
<van-popup show="{{ item.showDetailsPopup }}" data-index="{{index}}" bind:close="onClosePopup" position="bottom" round="5">
<van-tree-select items="{{ dataList }}" main-active-index="{{ item.mainActiveIndex }}" active-id="{{ item.activeId }}" data-index="{{index}}" bind:click-nav="onClickNav" bind:click-item="onClickItem">
</van-tree-select>
</van-popup>
</view>
<view class="inspect_info_list">
<van-row>
<van-col span="12">
<input type="number" placeholder="填写申请数量" placeholder-style="color:#6777aa;" class="inspect_input_fill_in" data-index="{{index}}" bindinput="onInputNumber" />
</van-col>
<van-col span="12">
<voucher-select columns="{{item.assetsUnits}}" placeholder="选择单位名称" selectValue="{{item.useUnitIndex}}" data-index="{{index}}" bindchange="onSelectUnit"></voucher-select>
</van-col>
</van-row>
</view>
<view class="inspect_info_list" wx:if="{{options.category=='wzl'}}">
<input placeholder="请填写规格型号" placeholder-style="color:#6777aa;" class="inspect_input_fill_in" value="{{item.assetsVersion}}" bindinput="onInputVersion" data-index="{{index}}" maxlength="32" />
</view>
<view class="inspect_info_list">
<textarea placeholder="请填写使用说明500字内" placeholder-style="color:#6777aa;" class="add_textarea" value="{{item.useReason}}" bindinput="onInputUseReason" data-index="{{index}}" maxlength="500" />
</view>
</view>
<view class="inspect_new_issues_max">
<view class="inspect_new_issues" bindtap="newApplyDetail">
<van-icon name="add-o" style="position: relative;top:5rpx;font-size: 30rpx;" /> 添加申请明细
</view>
</view>
<view class="problem_submit_to">
<view class="problem_submit_to_btn" bindtap="returnToPage">取消</view>
<view class="problem_submit_to_btn problem_submit_to_save" bindtap="onSave">提交申请</view>
</view>
</view>

View File

@ -1,110 +0,0 @@
.van-popup{
background: none !important;
}
.van-image__img{
border-radius: 10rpx !important;
}
.radio_custom_class{
padding: 10rpx 100rpx 10rpx 0;
}
.radio_label_class{
color: #ffffff !important;
}
.max_tab_name{
padding: 0 40rpx;
font-size:30rpx;
height: 460rpx;
overflow: auto;
margin-top: 20rpx;
text-align: center;
}
.van-popup.van-popup--bottom{
background: #232a44;
}
.van-popup {
background-color: var(--popup-background-color,#232a44) !important;
}
.font_color{
padding: 15rpx 0;
color: #157dd2;
}
.active{
font-size:30rpx;
font-weight: 600;
color: #14feff
}
.van-collapse.van-hairline--top-bottom:after{
border-width: 0px 0;
}
.van-cell.van-cell--borderless{
background-color: #2b345b;
color: #fff;
margin-top: 30rpx;
border-radius: 5rpx;
}
.van-cell.van-cell--borderless:active{
background-color: #2b345b;
}
.van-collapse-item__title.van-collapse-item__title--expanded:active{
background-color: #2b345b;
}
.van-collapse-item .van-cell:after{
border-bottom: 0;
}
.van-collapse-item.van-hairline--top:after{
border-top-width:0
}
.van-cell.van-cell--clickable{
background-color: #2b345b;
margin-top: 30rpx;
color: #fff;
border-radius: 15rpx;
}
.van-cell.van-cell--clickable:active{
background-color: #2b345b;
}
.van-collapse-item__wrapper .van-collapse-item__content{
background-color: #1e2336;
color:#8ca4ec ;
border-width: 0px 0;
}
.text_active{
padding-left: 5rpx;
color: #8369f5;
}
.van-steps{
background-color: transparent !important;
}
.van-step--horizontal .van-step__circle-container{
background-color: transparent !important;
}
.van-steps--horizontal{
padding: 10px 20px !important;
}
.van-sidebar{
background-color: #212737!important;
}
.van-sidebar-item{
color: #EFEFEF!important;
background-color: #212737!important;
}
.van-sidebar-item--selected{
border-color:var(--sidebar-selected-border-color,#8369f5)!important;
background-color: #252d41 !important;
color: #83a5ef !important;
}
.van-tree-select__content{
background-color:#252d41 !important;
}
.van-tree-select__item--active {
color: var(--tree-select-item-active-color,#8369f5) !important;
}
.van-tree-select{
height: 800rpx !important;
}
.van-popup.van-popup--bottom {
margin-bottom: -55rpx !important;
}

View File

@ -1,429 +0,0 @@
import {
allInstanceList,
readDeployNotes,
findCommentByProcInsId
} from '../../../api/flowable'
import {
createQr,
editApplyChecked,
addApplyDetailCheck,
findApplyDetailAllCheck
} from '../../../api/projectApply'
import {
findProjectApplyData
} from '../../../api/publics'
import config from '../../../config'
const app = getApp()
Page({
/**
* 页面的初始数据
*/
data: {
options: {},
active: 100,
stepList: [],
activeName: "",
flowRecordList: [],
infoData: {},
fileNames: [],
minImageList: [],
imgTypes: ["png", "jpg", "jpeg"],
stopBtnShow: false,
popupShow: false,
actIdx: 0,
popupId: null,
popupUnit: "吨",
popupNumber: "",
popupPrices: "",
baseUrl: config.baseUrl,
popupViewShow: false,
checkDirection: "vertical",
checkStepList:[],
isCheckRole: false
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
let roles = app.globalData.userData.roles;
if(roles!=null && roles.length>0){
roles.forEach(role =>{
if(role.roleId==88){
this.setData({
isCheckRole: true,
})
}
});
}
allInstanceList({
'businessKey': options.businessKey
}).then(res => {
this.setData({
options: res.rows[0]
})
this.findFlowNodes();
this.findCommentByProcInsId();
});
this.findApplyDataInfo(options.businessKey);
},
//查询工作流节点
findFlowNodes() {
readDeployNotes(this.data.options.deployId).then(res => {
let list = [{
text: '开始'
}];
res.data.forEach((item, idx) => {
list.push({
text: item.name,
desc: ''
});
});
list.push({
text: '结束'
});
this.setData({
stepList: list
})
});
},
//查询审批日志
findCommentByProcInsId() {
findCommentByProcInsId({
procInsId: this.data.options.procInsId
}).then(res => {
this.setData({
flowRecordList: res.data
})
let list = [];
res.data.forEach((item, idx) => {
if (item.deleteReason) {
item.deleteReason = this.getDeleteReason(item.deleteReason);
}
if (item.duration) {
item.duration = app.getDurationDate(item.duration);
}
list.push(item);
})
this.setData({
flowRecordList: list
})
});
},
//查询审批表单参数
findApplyDataInfo(businessKey) {
findProjectApplyData(businessKey).then(res => {
let imgList = [];
let fileNames = [];
if (res.data.applyFiles) {
res.data.applyFiles.split(',').forEach(files => {
let fileType = files.split(".")[files.split(".").length - 1].toLowerCase();
if (this.data.imgTypes.indexOf(fileType) == -1) {
let it = files.split('/');
fileNames.push({
name: it[it.length - 1],
path: files
});
} else {
imgList.push({
murl: config.baseUrl + files + '.min.jpg',
path: files
});
}
});
}
this.setData({
infoData: res.data,
fileNames: fileNames,
minImageList: imgList
})
})
},
// 手风琴
onChange(event) {
this.setData({
activeName: event.detail,
});
},
/**
* 获取驳回节点
* @param {*} val
*/
getDeleteReason(val) {
val = val.replace("Change activity to ", "");
let flowRecordList = this.data.flowRecordList;
for (let i = 0; i < flowRecordList.length; i++) {
if (flowRecordList[i].taskDefKey == val) {
return "驳回至" + flowRecordList[i].taskName;
}
}
},
/**
* 下载并打开文档
* @param {*} e
*/
downFile: function (e) {
let {
path
} = e.currentTarget.dataset.set
wx.downloadFile({
// 示例 url并非真实存在
url: config.baseUrl + '/common/download/resource?resource=' + path,
success: function (res) {
const filePath = res.tempFilePath
let fpt = filePath.split(".");
wx.openDocument({
filePath: filePath,
fileType: fpt[fpt.length - 1],
success: function (res) {
console.log('打开文档成功')
},
fail: function (res) {
console.log(res)
}
})
}
})
},
//选择退回节点
onSelectTargetKey(e) {
this.setData({
targetKey: e.detail.id,
backName: e.detail.name
})
},
returnToPage: function () {
/*关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面*/
wx.redirectTo({
url: '../list/index',
})
},
createQrSub(){
createQr(this.data.options.businessKey).then(res =>{
if(res.code==200){
this.setData({
"infoData.qrPath": res.data.qrPath
})
}
});
},
/**
* 左侧抽屉显示
*/
showPopup(e) {
let index = e.currentTarget.dataset.index
this.setData({
actIdx: index,
popupId: this.data.infoData.proProjectApplyDetailList[index].id,
popupUnit: this.data.infoData.proProjectApplyDetailList[index].assetsUnit,
popupShow: true
});
},
/**
* 左侧抽屉隐藏
*/
onClosePopup() {
this.setData({
popupShow: false
});
},
/**
* 左侧抽屉显示
*/
showViewPopup(e) {
let index = e.currentTarget.dataset.index
let unit = this.data.infoData.proProjectApplyDetailList[index].assetsUnit;
let detailId = this.data.infoData.proProjectApplyDetailList[index].id;
findApplyDetailAllCheck(detailId).then(res =>{
let list = [];
res.data.forEach(item =>{
let desc = "【"+item.createBy+"】 验收"+item.checkValue+" "+unit+",单价 "+item.checkPrice;
list.push({text: item.createTime, desc: desc })
});
this.setData({
popupViewShow: true,
checkStepList: list,
});
})
},
/**
* 左侧抽屉隐藏
*/
onCloseViewPopup() {
this.setData({
popupViewShow: false
});
},
//展示图片
showImg:function(e){
let paths = e.target.dataset.set;
let path = [];
paths.split(',').forEach(url => {
path.push(config.baseUrl + url);
});
wx.previewImage({
urls: path,
current: path[0]
})
},
/**
* 添加验收信息
*/
onAddChecked() {
let {
popupId,
popupNumber,
popupPrices
} = this.data;
if (!popupId) {
app.toast("数据异常,请刷新页面重试!")
return false;
}
if (!popupNumber) {
app.toast("请填写验收数量!")
return false;
}
if (!popupPrices) {
app.toast("请填写验收单价!")
return false;
}
addApplyDetailCheck({'detailId':popupId,'checkValue':popupNumber,'checkPrice':popupPrices}).then(res =>{
if(res.code==200){
// let da = this.data.infoData;
// da.proProjectApplyDetailList[this.data.actIdx].isChecked==1;
// da.proProjectApplyDetailList[this.data.actIdx].checkedTotalValue = parseFloat(da.proProjectApplyDetailList[this.data.actIdx].checkedTotalValue)+parseFloat(popupNumber);
// this.setData({
// popupShow: false,
// infoData:da,
// popupNumber:"",
// popupPrices:"",
// });
this.setData({
popupNumber:"",
popupPrices:"",
popupShow: false
});
this.onLoad({'businessKey':this.data.options.businessKey});
}
});
},
//保存验收结果
onCheckedSave(){
for(let i=0;i<this.data.infoData.proProjectApplyDetailList.length;i++){
if(this.data.infoData.proProjectApplyDetailList[i].isChecked==0){
app.toast(this.data.infoData.proProjectApplyDetailList[i].assetsName+" 还未验收完成!")
return false;
}
}
let that = this;
wx.showModal({
title: '提示',
content: '是否确定全部验收完成?',
success: function (sm) {
if (sm.confirm) {
that.submit();
} else if (sm.cancel) {
console.log('用户点击取消');
}
}
})
},
submit(){
editApplyChecked({'id':this.data.options.businessKey,'applyStatus':"100"}).then(res=>{
if(res.code==200){
wx.redirectTo({
url: '../list/index',
})
}
})
},
//输入验收数量
onInputCheckNumber(e) {
let value = e.detail.value;
this.setData({
popupNumber: value
})
},
//输入验收单价
onInputCheckPrices(e) {
let value = e.detail.value;
this.setData({
popupPrices: value
})
},
onAddDetail(){
wx.redirectTo({
url: '../edit/index?id='+this.data.infoData.id+"&applyType="+this.data.infoData.applyType,
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})

View File

@ -1,9 +0,0 @@
{
"usingComponents": {
"van-collapse": "@vant/weapp/collapse",
"van-collapse-item": "@vant/weapp/collapse-item",
"van-steps": "@vant/weapp/steps/index",
"van-popup": "@vant/weapp/popup/index"
},
"navigationStyle":"custom"
}

View File

@ -1,222 +0,0 @@
<wxs module="format" src="/utils/format.wxs"></wxs>
<view class="header_title">
<view class="header_title_row">
<van-row>
<van-col span="4">
<view class="header_img" bindtap="returnToPage">
<image src="/images/left.png"></image>
</view>
</van-col>
<van-col span="16">
<view class="header_name">进场验收详情</view>
</van-col>
</van-row>
</view>
</view>
<view class="max_content">
<van-steps steps="{{ stepList }}" active="{{ active }}" />
<view class="inspect_overview inspect_overview_max">
<view class="gk_open" style="margin-top: 20rpx;border: 1px solid transparent;">
<van-collapse value="{{activeName}}" bind:change="onChange">
<van-collapse-item title="审批日志" name="2">
<view class="inspect_list">
<view class="inspect_for" wx:for="{{flowRecordList}}" wx:key="index">
<view class="inspect_for_bgd">
<view class="inspect_list_title">
<view class="inspect_list_title_label inspect_list_title_width">
<view class="inspect_list_title_number">{{(flowRecordList.length-index) < 9 ?'0'+(flowRecordList.length-index):(flowRecordList.length-index)}}</view>
<view class="module_title module_title_flex inspect_list_title_text">{{item.taskName}}{{item.commentResult}}
<text wx:if="{{item.commentResult=='通过'}}" class="timeline_for_state_1 color_green">{{item.commentResult}}</text>
<text wx:if="{{item.commentResult=='驳回'}}" class="timeline_for_state_2 color_purple">{{item.commentResult}}</text>
</view>
</view>
</view>
<view class="inspect_list_info gk_open_con">
<view wx:if="{{item.assigneeName}}">
<image src="/images/lw_3.png"></image>办理用户:<text>{{item.assigneeName}}</text>
</view>
<view wx:if="{{item.assigneeName}}">
<image src="/images/s_1.png"></image>办理单位:<text class="color_blue">{{item.deptName}}</text>
</view>
<view wx:if="{{item.candidate}}">
<image src="/images/s_2.png"></image>候选办理:<text>{{item.candidate}}</text>
</view>
<view wx:if="{{item.deleteReason}}">
<image src="/images/s_18.png"></image>驳回节点:<text>{{item.deleteReason}}</text>
</view>
<view>
<image src="/images/s_6.png"></image>接收时间:<text>{{item.startTime}}</text>
</view>
<view wx:if="{{item.endTime}}">
<image src="/images/lw_8.png"></image>处理时间:<text>{{item.endTime}}</text>
</view>
<view wx:if="{{item.duration}}">
<image src="/images/img_11.png"></image>处理耗时:<text>{{item.duration}}</text>
</view>
<view wx:if="{{item.message}}">
<image src="/images/s_7.png"></image>处理意见:<text>{{item.message}}</text>
</view>
</view>
</view>
</view>
</view>
</van-collapse-item>
</van-collapse>
</view>
</view>
<view class="problem_submit_to">
<view wx:if="{{!infoData.qrPath}}" class="problem_submit_to_btn problem_submit_to_warning" bindtap="createQrSub">生成二维码</view>
<image wx:if="{{infoData.qrPath}}" src="{{baseUrl+infoData.qrPath}}" bindtap='showImg' data-set="{{infoData.qrPath}}"></image>
</view>
<view class="echarts_max">
<view class="echarts_min">
<view class="eharts_title module_title_flex">
申请信息
</view>
<view class="inspect_info">
<view class="inspect_overview_list">
<van-row>
<van-col span="6"><text class="color_purple">临建项目</text></van-col>
<van-col span="18" class="color_orange">{{ options.projectName||options.businessKeyName }}</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="6"><text class="color_purple">使用单位</text></van-col>
<van-col span="18" class="color_blue">{{infoData.createByDeptName}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="6"><text class="color_purple">使用时间</text></van-col>
<van-col span="18">{{infoData.useTime}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="6"><text class="color_purple">申请原因</text></van-col>
<van-col span="18">{{infoData.applyReason}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{minImageList.length>0 || fileNames.length>0}}">
<van-row>
<van-col span="6"><text class="color_purple">申请附件</text></van-col>
<view class="problem_list_info_con in-img-max" wx:if="{{minImageList.length>0}}">
<view class="in-img-div" wx:for="{{minImageList}}" wx:key="index">
<image bindtap='showImg' data-set="{{item.path}}" src='{{item.murl}}'></image>
</view>
</view>
<van-col span="18" class="color_blue" wx:if="{{fileNames.length>0}}">
<view class="files" wx:for="{{fileNames}}" wx:key="index">
<text data-set="{{item}}" style="word-wrap: break-word;" bindtap='downFile'>{{item.name}}</text>
</view>
</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="6"><text class="color_purple"> 申 请 人 </text></van-col>
<van-col span="18">{{infoData.createBy}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="6"><text class="color_purple">申请时间</text></van-col>
<van-col span="18">{{infoData.createTime}}</van-col>
</van-row>
</view>
</view>
</view>
</view>
<view class="echarts_max" wx:for="{{infoData.proProjectApplyDetailList}}" wx:key="index">
<view class="echarts_min">
<view class="eharts_title module_title_flex">
申请明细 {{ format.indexNumFormat(index) }}
<view class="module_see_info" bindtap="showViewPopup" data-index="{{index}}">查看验收
<van-icon name="arrow" />
</view>
</view>
<view class="inspect_info" >
<view class="inspect_overview_list">
<van-row>
<van-col span="6"><text class="color_purple">申请明细</text></van-col>
<van-col span="18">{{item.typeName + ' > '+ item.assetsName }}</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="6"><text class="color_purple">申请数量</text></van-col>
<van-col span="18">{{item.number + ' '+ item.assetsUnit }}</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{item.assetsVersion}}">
<van-row>
<van-col span="6"><text class="color_purple">规格型号</text></van-col>
<van-col span="18">{{item.assetsVersion }}</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{item.assetsVersion}}">
<van-row>
<van-col span="6"><text class="color_purple">使用说明</text></van-col>
<van-col span="18">{{ item.useReason }}</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="6"><text class="color_purple">验收数量</text></van-col>
<van-col span="18" class="safety_issue_number">{{ item.checkedTotalValue }}</van-col>
</van-row>
</view>
<view class="problem_submit_to_view" wx:if="{{isCheckRole && infoData.applyStatus!='100'}}">
<view class="problem_submit_to_view_btn problem_submit_to_view_blue" bindtap="showPopup" data-index="{{index}}">添加验收</view>
</view>
</view>
</view>
</view>
<!-- 添加验收信息 -->
<van-popup show="{{ popupShow }}" position="bottom" custom-style="width:100%;height:45%;background:#191d28" bind:close="onClosePopup">
<view class="inspect_info">
<view class="inspect_info_list">
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">实际到货
<text style="font-size: small; color: antiquewhite;">[{{popupUnit}}]</text>
</view>
<view class="inspect_info_content">
<input type="number" placeholder="请填写到货数量" placeholder-style="color:#6777aa;" class="inspect_input_fill_in" bindinput="onInputCheckNumber" value="{{popupNumber}}"/>
</view>
</view>
<view class="inspect_info_list">
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">采购单价
<text style="font-size: small; color: antiquewhite;">[元]</text>
</view>
<view class="inspect_info_content">
<input type="number" placeholder="请填写采购单价" placeholder-style="color:#6777aa;" class="inspect_input_fill_in" bindinput="onInputCheckPrices" value="{{popupPrices}}"/>
</view>
</view>
</view>
<view class="problem_submit_to">
<view class="problem_submit_to_btn problem_submit_to_save" bindtap="onAddChecked">确认添加验收</view>
</view>
</van-popup>
<!-- 查看验收信息 -->
<van-popup show="{{ popupViewShow }}" position="bottom" custom-style="width:100%;height:50%;background:#191d28" bind:close="onCloseViewPopup">
<view wx:if="{{checkStepList.length>0}}" class="inspect_info_2" >
<van-steps direction="vertical" steps="{{ checkStepList }}" active="{{ active }}"/>
</view>
<view wx:else class="inspect_info_2" >
<view style="padding-top: 28px;text-align: -webkit-center;">
<image src="/images/nodata.png" style="width: 130px;height: 105px;"></image>
<view style="color: #a5abbb;">暂无数据</view>
</view>
</view>
</van-popup>
<view class="problem_submit_to" wx:if="{{isCheckRole && infoData.applyStatus!='100'}}">
<view class="problem_submit_to_btn problem_submit_to_warning" bindtap="onAddDetail">添加申请明细</view>
<view class="problem_submit_to_btn problem_submit_to_save" bindtap="onCheckedSave">验收完成</view>
</view>
</view>

View File

@ -1,169 +0,0 @@
.van-popup{
background: none !important;
}
.van-image__img{
border-radius: 10rpx !important;
}
.radio_custom_class{
padding: 10rpx 100rpx 10rpx 0;
}
.radio_label_class{
color: #ffffff !important;
}
.max_tab_name{
padding: 0 40rpx;
font-size:30rpx;
height: 460rpx;
overflow: auto;
margin-top: 20rpx;
text-align: center;
}
.van-popup.van-popup--bottom{
background: #232a44;
}
.van-popup {
background-color: var(--popup-background-color,#232a44) !important;
}
.font_color{
padding: 15rpx 0;
color: #157dd2;
}
.active{
font-size:30rpx;
font-weight: 600;
color: #14feff
}
.van-collapse.van-hairline--top-bottom:after{
border-width: 0px 0;
}
.van-cell.van-cell--borderless{
background-color: #2b345b;
color: #fff;
margin-top: 30rpx;
border-radius: 5rpx;
}
.van-cell.van-cell--borderless:active{
background-color: #2b345b;
}
.van-collapse-item__title.van-collapse-item__title--expanded:active{
background-color: #2b345b;
}
.van-collapse-item .van-cell:after{
border-bottom: 0;
}
.van-collapse-item.van-hairline--top:after{
border-top-width:0
}
.van-cell.van-cell--clickable{
background-color: #2b345b;
margin-top: 30rpx;
color: #fff;
border-radius: 15rpx;
}
.van-cell.van-cell--clickable:active{
background-color: #2b345b;
}
.van-collapse-item__wrapper .van-collapse-item__content{
background-color: #1e2336;
color:#8ca4ec ;
border-width: 0px 0;
}
.gk_open_con view{
padding: 10rpx 0;
width: 100%;
}
.gk_open_con image{
width: 30rpx;
height: 30rpx;
margin-right: 5rpx;
position: relative;
top: 5rpx;
}
.pass{
background-color: #388a38;
}
.transact{
background-color: #8e6424;
}
.text_active{
padding-left: 5rpx;
color: #8369f5;
}
.van-steps{
background-color: transparent !important;
}
.van-step--horizontal .van-step__circle-container{
background-color: transparent !important;
}
.van-steps--horizontal{
padding: 10px 20px !important;
}
.inspect_info {
padding: 30rpx;
background: #1e2336;
margin-bottom: 10rpx;
}
.echarts_max{
margin-top: 30rpx;
padding:0 30rpx;
}
.echarts_min{
background:#1e2336;
font-size: 28rpx;
padding: 15rpx;
border-radius:15rpx;
}
.eharts_title{
height: 40rpx;
line-height: 40rpx;
padding-left: 40rpx;
background: url("https://szgcwx.jhncidg.com/staticFiles/img/menu/CORE_52887EE6A33042408E11C2174974ABA1.png") no-repeat left/35rpx;
}
.eharts_head{
text-align: center;
padding: 30rpx 0;
}
.eharts_head text{
color:#0ad7ec;
font-size: 40rpx;
}
.eharts_con{
height: 320rpx;
width: auto;
}
.eharts_title_float{
float: right;
}
.eharts_title_float text{
padding: 0 5rpx;
}
.password-icon {
width: 40rpx;
height: 40rpx;
position: absolute;
right: 60rpx;
margin-top: -60rpx;
z-index: 999;
}
.eharts_title_float_img{
width: 40rpx;
height: 40rpx;
float: right;
position: relative;
top: 2rpx;
}
.problem_submit_to image{
width: 180rpx;
height: 180rpx;
}
/* 新增安全检查 */
.inspect_info_2 {
padding: 30rpx;
}

View File

@ -1,163 +0,0 @@
import {
checkApplyList,
findGroupCountByStatus
} from '../../../api/projectApply'
const app = getApp()
Page({
/**
* 页面的初始数据
*/
data: {
jxzCount: 0,
ywcCount: 0,
activeState: "dys",
total: 0,
pageNum: 1,
pageSize: 10,
listData: [],
},
getInfo(e) {
let {
id
} = e.currentTarget.dataset.set
wx.redirectTo({
url: `../info/index?businessKey=${id}`,
})
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
//获取缓存数据
this.getListData();
},
/**
* 查询项目举牌验收数据
*/
getListData() {
this.queryCount();
let params = "activeName="+ this.data.activeState +"&pageNum=" + this.data.pageNum + "&pageSize=" + this.data.pageSize;
checkApplyList(params).then(res =>{
if (res.code == "200") {
//这里处理this.data.lastDataSize=this.data.pageSize
this.setData({
total: res.total,
listData: this.data.listData.concat(res.rows)
})
}
})
},
/**
* 加载更多数据
*/
onScrollToLower() {
let nal = Math.ceil(this.data.total / this.data.pageSize);
if (this.data.pageNum < nal) {
this.setData({
pageNum: this.data.pageNum + 1
});
this.getListData();
}
},
//查询统计
queryCount() {
let params = "activeName="+ this.data.activeState;
//查询统计数量
findGroupCountByStatus(params).then(res =>{
let dys = 0;
let yys = 0;
res.data.forEach(item => {
if(item.applyStatus==10){
dys += item.total;
}else{
yys += item.total;
}
});
this.setData({
jxzCount: dys,
ywcCount: yys
});
});
},
/**
* 标签切换
*/
typeJump(e) {
let index = e.currentTarget.dataset.index;
let nav = "";
if (index == 1) {
nav = 'dys';
} else if (index == 2) {
nav = 'yys';
}
this.setData({
activeState: nav,
pageNum: 1,
listData: [],
});
this.getListData();
},
returnToPage: function () {
/*关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面*/
wx.redirectTo({
url: '../../../pages/index/index',
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})

View File

@ -1,56 +0,0 @@
<view class="header_title">
<view class="header_title_row">
<van-row>
<van-col span="4">
<view class="header_img" bindtap="returnToPage">
<image src="/images/left.png"></image>
</view>
</van-col>
<van-col span="15">
<view class="header_name">进场验收管理</view>
</van-col>
</van-row>
</view>
</view>
<scroll-view class="max_content_scroll" type="list" scroll-y bindscrolltolower="onScrollToLower">
<view class="modify_video_nav" style="margin-top: 5rpx;">
<view class="{{activeState=='dys'?'active':''}}" bindtap="typeJump" data-index="1"><text>待验收({{jxzCount}}</text></view>
<view class="{{activeState=='yys'?'active':''}}" bindtap="typeJump" data-index="2"><text>已验收({{ywcCount}}</text></view>
</view>
<view class="inspect_max_scroll">
<view class="inspect_for_scroll" v-if="{{ listData.length>0 }}" wx:for="{{listData}}" wx:key="index" data-set="{{item}}" bindtap="getInfo">
<view class="inspect_for_bgd">
<view class="inspect_list_title">
<view class="inspect_list_title_label inspect_list_title_width">
<view class="inspect_list_title_number">{{index < 9 ?'0'+(index+1):(index+1)}}</view>
<view class="module_title module_title_flex inspect_list_title_text">
<text class="color_blue">{{item.projName}}</text>
<text wx:if="{{item.applyStatus=='10'}}" class="timeline_for_state_1 color_orange" style="font-weight: 800;">待验收</text>
<text wx:if="{{item.applyStatus=='100'}}" class="timeline_for_state_1 color_green">已验收</text>
</view>
</view>
</view>
<view class="inspect_list_info">
<view class="inspect_list_info_details">
<view class="inspect_list_info_data">
<view class="inspect_list_info_data_prop">所属项目:<text>{{item.parProjName}}</text></view>
<view class="inspect_list_info_data_prop">申请类型:<text wx:if="{{item.applyType=='wzl'}}">物资类</text><text wx:if="{{item.applyType=='rgl'}}">人工类</text><text wx:if="{{item.applyType=='sbl'}}">设备类</text><text wx:if="{{item.applyType=='gll'}}">管理类</text></view>
<view class="inspect_list_info_data_prop">申请用户:<text>{{item.createByDeptName}}-{{item.createBy}}</text></view>
<view class="inspect_list_info_data_prop">使用时间:<text class="color_blue">{{item.useTime}}</text>
</view>
<view class="inspect_list_info_data_prop">申请时间:<text class="color_blue">{{item.createTime}}</text>
</view>
</view>
</view>
<view class="inspect_list_info_position">申请原因:<text class="color_purple">{{item.applyReason}}</text></view>
</view>
</view>
</view>
<view wx:if="{{listData.length==0}}">
<view style="padding-top: 70px;text-align: -webkit-center;">
<image src="/images/nodata.png" style="width: 130px;height: 105px;"></image>
<view style="color: #a5abbb;">暂无数据</view>
</view>
</view>
</view>
</scroll-view>

View File

@ -1 +0,0 @@
/* pages/project_check/list/index.wxss */

View File

@ -1,3 +1,4 @@
import config from '../../../config'
import {
reject,
complete,
@ -9,7 +10,10 @@ import {
import {
findProjectApplyData
} from '../../../api/publics'
import config from '../../../config'
import {
findProSubDeptsInfoById,
findProSubDeptsUserInfoById
} from '../../../api/project'
const app = getApp()
Page({
/**
@ -19,17 +23,20 @@ Page({
options: {},
active: 0,
stepList: [],
rejectNode:false,
rejectNode: false,
activeName: "",
flowRecordList: [],
infoData: {},
fileNames: [],
minImageList: [],
imgTypes: ["png", "jpg", "jpeg"],
subDeptData: {
subDeptInfos: {}
},
subDeptUserData: {
user: {},
},
stopBtnShow: false,
comment: "",
targetKey:"",
targetKey: "",
targetKeyList: [],
imgBaseUrl: config.baseImgUrl
},
/**
@ -52,9 +59,9 @@ Page({
text: '开始'
}];
let index = this.data.active;
res.data.forEach((item,idx) => {
if(this.data.options.taskName==item.name){
index = idx+1;
res.data.forEach((item, idx) => {
if (this.data.options.taskName == item.name) {
index = idx + 1;
}
list.push({
text: item.name,
@ -102,34 +109,33 @@ Page({
//查询审批表单参数
findApplyDataInfo() {
findProjectApplyData(this.data.options.businessKey).then(res => {
let imgList = [];
let fileNames = [];
if (res.data.applyFiles) {
res.data.applyFiles.split(',').forEach(files => {
let fileType = files.split(".")[files.split(".").length - 1].toLowerCase();
if (this.data.imgTypes.indexOf(fileType) == -1) {
let it = element.split('/');
fileNames.push({
name: it[it.length - 1],
path: files
});
} else {
imgList.push({
murl: config.baseUrl + files + '.min.jpg',
path: files
});
}
});
findProSubDeptsUserInfoById(this.data.options.businessKey).then(res => {
if (res.data.eduFilePath) {
let files = res.data.eduFilePath.split('/');
res.data.eduFileName = files[files.length - 1];
}
if(res.data.user.userInfos){
res.data.user.userInfos = JSON.parse(res.data.user.userInfos);
}
this.setData({
infoData: res.data,
fileNames: fileNames,
minImageList: imgList,
subDeptUserData: res.data
})
//查询单位信息
this.getSubDeptInfo(res.data.subDeptId);
})
},
//查询审批表单参数
getSubDeptInfo(subDeptId) {
findProSubDeptsInfoById(subDeptId).then(res => {
res.data.subDeptInfos = JSON.parse(res.data.subDeptInfos);
this.setData({
subDeptData: res.data
})
})
},
//初始化退回节点
initTargetKeyList() {
returnList({
@ -189,16 +195,14 @@ Page({
targetKeyList
} = this.data;
returnTask({
taskId:options.taskId,
targetKey:targetKeyList[0].id,
taskId: options.taskId,
targetKey: targetKeyList[0].id,
comment
}).then(res => {
if (res.code == 200) {
app.toast("驳回申请成功!")
setTimeout(() => {
wx.redirectTo({
url: '../await/index',
})
this.returnToPage();
}, 500)
}
});
@ -242,16 +246,14 @@ Page({
comment
} = this.data;
complete({
taskId:options.taskId,
taskId: options.taskId,
instanceId: procInsId,
comment
}).then(res => {
if (res.code == 200) {
app.toast("申请审批通过成功!")
setTimeout(() => {
wx.redirectTo({
url: '../await/index',
})
this.returnToPage();
}, 500)
}
});
@ -303,9 +305,7 @@ Page({
if (res.code == 200) {
app.toast("驳回申请流程成功!")
setTimeout(() => {
wx.redirectTo({
url: '../await/index',
})
this.returnToPage();
}, 500)
}
});
@ -343,7 +343,7 @@ Page({
},
//展示图片
showImg:function(e){
showImg: function (e) {
let paths = e.target.dataset.set;
let path = [];
paths.split(',').forEach(url => {
@ -365,7 +365,7 @@ Page({
} = e.currentTarget.dataset.set
wx.downloadFile({
// 示例 url并非真实存在
url: config.baseUrl + '/common/download/resource?resource=' + path,
url: config.baseUrl + '/file/download?fileName=' + path,
success: function (res) {
const filePath = res.tempFilePath
let fpt = filePath.split(".");
@ -391,10 +391,19 @@ Page({
})
},
/**
* 返回页面
*/
returnToPage: function () {
wx.redirectTo({
url: '../await/index',
})
if (wx.getStorageSync('nav-types') == "depts") {
wx.redirectTo({
url: '../subDepts/index',
})
} else if (wx.getStorageSync('nav-types') == "users") {
wx.redirectTo({
url: '../subDeptsUsers/index',
})
}
},
/**

View File

@ -25,155 +25,310 @@
<view class="inspect_list_title">
<view class="inspect_list_title_label inspect_list_title_width">
<view class="inspect_list_title_number">{{(flowRecordList.length-index) < 9 ?'0'+(flowRecordList.length-index):(flowRecordList.length-index)}}</view>
<view class="module_title module_title_flex inspect_list_title_text">{{item.taskName}}{{item.commentResult}}
<text wx:if="{{item.commentResult=='通过'}}" class="timeline_for_state_1 color_green">{{item.commentResult}}</text>
<text wx:if="{{item.commentResult=='委派'}}" class="timeline_for_state_1 color_blue">{{item.commentResult}}</text>
<text wx:if="{{item.commentResult=='转办'}}" class="timeline_for_state_1 color_blue">{{item.commentResult}}</text>
<text wx:if="{{item.commentResult=='驳回'}}" class="timeline_for_state_2 color_purple">{{item.commentResult}}</text>
<text wx:if="{{item.commentResult=='退回'}}" class="timeline_for_state_2 color_purple">{{item.commentResult}}</text>
</view>
<view class="module_title module_title_flex inspect_list_title_text">{{item.taskName}}{{item.commentResult}}
<text wx:if="{{item.commentResult=='通过'}}" class="timeline_for_state_1 color_green">{{item.commentResult}}</text>
<text wx:if="{{item.commentResult=='委派'}}" class="timeline_for_state_1 color_blue">{{item.commentResult}}</text>
<text wx:if="{{item.commentResult=='转办'}}" class="timeline_for_state_1 color_blue">{{item.commentResult}}</text>
<text wx:if="{{item.commentResult=='驳回'}}" class="timeline_for_state_2 color_purple">{{item.commentResult}}</text>
<text wx:if="{{item.commentResult=='退回'}}" class="timeline_for_state_2 color_purple">{{item.commentResult}}</text>
</view>
</view>
<view class="inspect_list_info gk_open_con">
<view wx:if="{{item.assigneeName}}">
<image src="/images/lw_3.png"></image>办理用户:<text>{{item.assigneeName}}</text>
</view>
<view wx:if="{{item.assigneeName}}">
<image src="/images/s_1.png"></image>办理单位:<text class="color_blue">{{item.deptName}}</text>
</view>
<view wx:if="{{item.candidate}}">
<image src="/images/s_2.png"></image>候选办理:<text>{{item.candidate}}</text>
</view>
<view wx:if="{{item.deleteReason}}">
<image src="/images/s_18.png"></image>驳回节点:<text>{{item.deleteReason}}</text>
</view>
<view>
<image src="/images/s_6.png"></image>接收时间:<text>{{item.startTime}}</text>
</view>
<view wx:if="{{item.endTime}}">
<image src="/images/lw_8.png"></image>处理时间:<text>{{item.endTime}}</text>
</view>
<view wx:if="{{item.duration}}">
<image src="/images/img_11.png"></image>处理耗时:<text>{{item.duration}}</text>
</view>
<view wx:if="{{item.message}}">
<image src="/images/s_7.png"></image>处理意见:<text>{{item.message}}</text>
</view>
</view>
<view class="inspect_list_info gk_open_con">
<view wx:if="{{item.assigneeName}}">
<image src="/images/lw_3.png"></image>办理用户:<text>{{item.assigneeName}}</text>
</view>
<view wx:if="{{item.assigneeName}}">
<image src="/images/s_1.png"></image>办理单位:<text class="color_blue">{{item.deptName}}</text>
</view>
<view wx:if="{{item.candidate}}">
<image src="/images/s_2.png"></image>候选办理:<text>{{item.candidate}}</text>
</view>
<view wx:if="{{item.deleteReason}}">
<image src="/images/s_18.png"></image>驳回节点:<text>{{item.deleteReason}}</text>
</view>
<view>
<image src="/images/s_6.png"></image>接收时间:<text>{{item.startTime}}</text>
</view>
<view wx:if="{{item.endTime}}">
<image src="/images/lw_8.png"></image>处理时间:<text>{{item.endTime}}</text>
</view>
<view wx:if="{{item.duration}}">
<image src="/images/img_11.png"></image>处理耗时:<text>{{item.duration}}</text>
</view>
<view wx:if="{{item.message}}">
<image src="/images/s_7.png"></image>处理意见:<text>{{item.message}}</text>
</view>
</view>
</view>
</view>
</view>
</van-collapse-item>
</van-collapse>
</view>
</view>
<view class="inspect_info">
<view class="inspect_overview_list">
<van-row>
<van-col span="6"><text class="color_purple">临建项目</text></van-col>
<van-col span="18" class="color_orange">{{ options.projectName}}</van-col>
</van-row>
<view class="module_title module_title_padding">
<view>{{subDeptData.projectName}}</view>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="6"><text class="color_purple">使用单位</text></van-col>
<van-col span="18" class="color_blue">{{infoData.createByDeptName}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="6"><text class="color_purple">使用时间</text></van-col>
<van-col span="18">{{infoData.useTime}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="6"><text class="color_purple">申请原因</text></van-col>
<van-col span="18">{{infoData.applyReason}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{minImageList.length>0 || fileNames.length>0}}">
<van-row>
<van-col span="6"><text class="color_purple">申请附件</text></van-col>
<view class="problem_list_info_con in-img-max" wx:if="{{minImageList.length>0}}">
<view class="in-img-div" wx:for="{{minImageList}}" wx:key="index">
<image bindtap='showImg' data-set="{{item.path}}" src='{{item.murl}}'></image>
</view>
<view class="inspect_info" wx:if="{{options.category=='1' || options.category=='2' || options.category=='3' || options.category=='4'}}">
<view class="inspect_overview_list">
<van-row>
<van-col span="8"><text class="color_purple">项目单位</text></van-col>
<van-col span="16" class="color_orange">{{ subDeptData.projectName}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="8"><text class="color_purple">单位类型</text></van-col>
<van-col span="16" class="color_blue">{{subDeptData.subDeptTypeName}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="8"><text class="color_purple">单位名称</text></van-col>
<van-col span="16">{{subDeptData.subDeptName}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{options.category=='1'}}">
<van-row>
<van-col span="8"><text class="color_purple">信用代码</text></van-col>
<van-col span="16">{{subDeptData.subDeptCode}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{options.category=='1'}}">
<van-row>
<van-col span="8"><text class="color_purple">营业执照</text></van-col>
<van-col span="16">
<view class="problem_list_info_con in-img-max">
<view class="in-img-div" wx:key="index">
<image bindtap='showImg' data-set="{{subDeptData.businessLicensePath}}" src="{{imgBaseUrl+subDeptData.businessLicensePath+'.min.jpg'}}"></image>
</view>
</view>
</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{options.category=='1'}}">
<van-row>
<van-col span="8"><text class="color_purple">法人姓名</text></van-col>
<van-col span="16">{{subDeptData.subDeptInfos.legalPerson}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{options.category=='1'}}">
<van-row>
<van-col span="8"><text class="color_purple">法人身份证</text></van-col>
<van-col span="16">{{subDeptData.subDeptInfos.legalPersonCard}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{options.category=='1'}}">
<van-row>
<van-col span="8"><text class="color_purple">法人证件</text></van-col>
<van-col span="16">
<view class="problem_list_info_con in-img-max">
<view class="in-img-div" wx:key="index">
<image bindtap='showImg' data-set="{{subDeptData.subDeptInfos.legalPersonCardImgPos}}" src="{{imgBaseUrl+subDeptData.subDeptInfos.legalPersonCardImgPos+'.min.jpg'}}"></image>
<image bindtap='showImg' data-set="{{subDeptData.subDeptInfos.legalPersonCardImgInv}}" src="{{imgBaseUrl+subDeptData.subDeptInfos.legalPersonCardImgInv+'.min.jpg'}}"></image>
</view>
</view>
</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{options.category=='1'}}">
<van-row>
<van-col span="8"><text class="color_purple">进入场地时间</text></van-col>
<van-col span="16">{{subDeptData.useDates}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{options.category=='1'}}">
<van-row>
<van-col span="8"><text class="color_purple">计划开工时间</text></van-col>
<van-col span="16">{{subDeptData.startWorkDates}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{options.category=='1'}}">
<van-row>
<van-col span="8"><text class="color_purple">计划完工时间</text></van-col>
<van-col span="16">{{subDeptData.endWorkDates}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{options.category=='1'}}">
<van-row>
<van-col span="8"><text class="color_purple">合同约定范围</text></van-col>
<van-col span="16">{{subDeptData.contractInfos}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="8">
<text wx:if="{{options.category=='1'}}" class="color_purple">委托代理人</text>
<text wx:if="{{options.category!='1'}}" class="color_purple">人员姓名</text>
</van-col>
<van-col span="16">{{subDeptUserData.user.nickName}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="8">
<text wx:if="{{options.category=='1'}}" class="color_purple">代理人身份证</text>
<text wx:if="{{options.category!='1'}}" class="color_purple">身份证号码</text>
</van-col>
<van-col span="16">{{subDeptUserData.user.cardCode}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{options.category!='1'}}">
<van-row>
<van-col span="8">
<text class="color_purple">工种岗位</text>
</van-col>
<van-col span="16">{{subDeptUserData.craftPostName}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{options.category!='1' && options.category!='2'}}">
<van-row>
<van-col span="8">
<text class="color_purple">工种班组</text>
</van-col>
<van-col span="16">{{subDeptUserData.subDeptGroupName}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{options.category!='1'}}">
<van-row>
<van-col span="8"><text class="color_purple">所属民族</text></van-col>
<van-col span="16">{{subDeptUserData.user.userInfos.nativePlace}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{options.category!='1'}}">
<van-row>
<van-col span="8"><text class="color_purple">详细地址</text></van-col>
<van-col span="16">{{subDeptUserData.user.userInfos.address}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="8">
<text wx:if="{{options.category=='1'}}" class="color_purple">代理人证件</text>
<text wx:if="{{options.category!='1'}}" class="color_purple">人员证件照</text>
</van-col>
<van-col span="16">
<view class="problem_list_info_con in-img-max">
<view class="in-img-div" wx:key="index">
<image bindtap='showImg' data-set="{{subDeptUserData.user.cardImgPos}}" src="{{imgBaseUrl+subDeptUserData.user.cardImgPos+'.min.jpg'}}"></image>
<image bindtap='showImg' data-set="{{subDeptUserData.user.cardImgInv}}" src="{{imgBaseUrl+subDeptUserData.user.cardImgInv+'.min.jpg'}}"></image>
</view>
</view>
</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="8"><text class="color_purple">花名册近照</text></van-col>
<van-col span="16">
<view class="problem_list_info_con in-img-max">
<view class="in-img-div" wx:key="index">
<image bindtap='showImg' data-set="{{subDeptUserData.user.userPicture}}" src="{{imgBaseUrl+subDeptUserData.user.userPicture+'.min.jpg'}}"></image>
</view>
</view>
</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{options.category!='4'}}">
<van-row>
<van-col span="8"><text class="color_purple">单位委托书</text></van-col>
<van-col span="16">
<view class="problem_list_info_con in-img-max">
<view class="in-img-div" wx:key="index">
<image bindtap='showImg' data-set="{{subDeptUserData.subDeptPowerPath}}" src="{{imgBaseUrl+subDeptUserData.subDeptPowerPath+'.min.jpg'}}"></image>
</view>
</view>
</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="8"><text class="color_purple">联系电话</text></van-col>
<van-col span="16">{{subDeptUserData.user.phonenumber}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{options.category!='1'}}">
<van-row>
<van-col span="8"><text class="color_purple">紧急联系人</text></van-col>
<van-col span="16">{{subDeptUserData.user.userInfos.emergencyContact}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{options.category!='1'}}">
<van-row>
<van-col span="8"><text class="color_purple">紧急联系电话</text></van-col>
<van-col span="16">{{subDeptUserData.user.userInfos.contactPhone}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{options.category=='4'}}">
<van-row>
<van-col span="8"><text class="color_purple">开户行名称</text></van-col>
<van-col span="16">{{subDeptUserData.user.userInfos.bankName}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{options.category=='4'}}">
<van-row>
<van-col span="8"><text class="color_purple">开户行网点</text></van-col>
<van-col span="16">{{subDeptUserData.user.userInfos.bankOffice}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{options.category=='4'}}">
<van-row>
<van-col span="8"><text class="color_purple">工资银行卡号</text></van-col>
<van-col span="16">{{subDeptUserData.user.userInfos.bankCardNo}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">高血压、心脏病等基础身体健康问题
</view>
<van-col span="18" class="color_blue" wx:if="{{fileNames.length>0}}">
<view class="files" wx:for="{{fileNames}}" wx:key="index">
<text data-set="{{item}}" style="word-wrap: break-word;" bindtap='downFile'>{{item.name}}</text>
<view class="inspect_info_content">
<text wx:if="{{subDeptUserData.illnessStatus=='0'}}" class="code_label_2 code_label_green" style="padding: 5rpx 50rpx;font-size: 25rpx;">无</text>
<text wx:if="{{subDeptUserData.illnessStatus!='0'}}" class="code_label_2 code_label_red" style="padding: 5rpx 50rpx;font-size: 25rpx;">有</text>
</view>
</view>
<view class="inspect_overview_list">
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">严重呼吸系统疾病、严重心脑血管疾病、肝肾疾病、恶性肿瘤以及药物无法有效控制的高血压和糖尿病等基础性病症状征兆
</view>
<view class="inspect_info_content">
<text wx:if="{{subDeptUserData.supIllnessStatus=='0'}}" class="code_label_2 code_label_green" style="padding: 5rpx 50rpx;font-size: 25rpx;">无</text>
<text wx:if="{{subDeptUserData.supIllnessStatus!='0'}}" class="code_label_2 code_label_red" style="padding: 5rpx 50rpx;font-size: 25rpx;">有</text>
</view>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="8"><text class="color_purple">安全承诺书</text></van-col>
<van-col span="16" class="color_blue">
<view class="files">
<text data-set="{{subDeptUserData.eduFilePath}}" style="word-wrap: break-word;" bindtap='downFile'>点击下载安全承诺书</text>
</view>
</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="6"><text class="color_purple"> 申 请 人 </text></van-col>
<van-col span="18">{{infoData.createBy}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="6"><text class="color_purple">申请时间</text></van-col>
<van-col span="18">{{infoData.createTime}}</van-col>
</van-row>
</view>
</view>
<view>
<view class="inspect_info" wx:for="{{infoData.proProjectApplyDetailList}}" wx:key="index">
<view class="module_title module_title_flex">
<view class="text_active">申请明细 {{ format.indexNumFormat(index) }}</view>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="6"><text class="color_purple">申请明细</text></van-col>
<van-col span="18">{{item.typeName + ' > '+ item.assetsName }}</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="6"><text class="color_purple">申请数量</text></van-col>
<van-col span="18">{{item.number + ' '+ item.assetsUnit }}</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{item.assetsVersion}}">
<van-row>
<van-col span="6"><text class="color_purple">规格型号</text></van-col>
<van-col span="18">{{item.assetsVersion }}</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{item.useReason}}">
<van-row>
<van-col span="6"><text class="color_purple">使用说明</text></van-col>
<van-col span="18">{{ item.useReason }}</van-col>
</van-col>
</van-row>
</view>
</view>
</view>
<view class="inspect_info">
<view class="inspect_overview_list_max">
<view class="inspect_overview_list">
<view class="inspect_overview_title" style="padding: 20rpx 0 10rpx;">审批意见</view>
<view class="inspect_overview_content">
<textarea class="add_textarea" placeholder="请填写审批意见500字内" placeholder-style="color:#6777aa;" maxlength="500" bindinput="commentInput" />
</view>
</view>
<view class="inspect_overview_list" wx:if="{{backShow}}">
<view class="inspect_overview_list" wx:if="{{false}}">
<view class="inspect_overview_title" style="padding: 20rpx 0 10rpx;">退回节点</view>
<view class="inspect_overview_content">
<voucher-select columns="{{targetKeyList}}" placeholder="请选择退回节点" bindchange="onSelectTargetKey"></voucher-select>
</view>
</view>
</view>
<view class="problem_submit_to">
<view class="problem_submit_to_btn" bindtap="onEditApply">修改申请</view>
<view class="problem_submit_to_btn" bindtap="onEditApply" wx:if="{{false}}">修改申请</view>
<view class="problem_submit_to_btn problem_submit_to_blue" bindtap="onAssign" wx:if="{{false}}">任务转办</view>
<view class="problem_submit_to_btn problem_submit_to_eq" bindtap="onDelegate" wx:if="{{false}}">任务委派</view>
<view class="problem_submit_to_btn problem_submit_to_delete" bindtap="onBack">审批驳回</view>
<view class="problem_submit_to_btn problem_submit_to_save" bindtap="onPass">审批通过</view>
<view class="problem_submit_to_btn problem_submit_to_eq" bindtap="onDelegate" wx:if="{{false}}">任务委派</view>
<view class="problem_submit_to_btn problem_submit_to_delete" bindtap="onBack">审批驳回</view>
<view class="problem_submit_to_btn problem_submit_to_save" bindtap="onPass">审批通过</view>
</view>
<view class="problem_submit_to" wx:if="{{false}}">
<view class="problem_submit_to_btn" bindtap="onEditApply">修改申请信息</view>
</view>

View File

@ -1,14 +1,12 @@
import config from '../../../config'
import {
stopProcess,
revokeProcess,
deleteInstance,
readDeployNotes,
findCommentByProcInsId
} from '../../../api/flowable'
import {
findProjectApplyData
} from '../../../api/publics'
import config from '../../../config'
findProSubDeptsInfoById,
findProSubDeptsUserInfoById
} from '../../../api/project'
const app = getApp()
Page({
/**
@ -21,7 +19,12 @@ Page({
stepList: [],
activeName: "",
flowRecordList: [],
infoData: {},
subDeptData: {
subDeptInfos: {}
},
subDeptUserData: {
user: {},
},
stopShow: false,
deleteShow: false,
revocationShow: false,
@ -101,33 +104,28 @@ Page({
//查询审批表单参数
findApplyDataInfo() {
findProjectApplyData(this.data.options.businessKey).then(res => {
let imgList = [];
let fileNames = [];
if (res.data.applyFiles) {
res.data.applyFiles.split(',').forEach(files => {
let fileType = files.split(".")[files.split(".").length - 1].toLowerCase();
if (this.data.imgTypes.indexOf(fileType) == -1) {
let it = files.split('/');
fileNames.push({
name: it[it.length - 1],
path: files
});
} else {
imgList.push({
murl: config.baseUrl + files + '.min.jpg',
path: files
});
}
});
findProSubDeptsUserInfoById(this.data.options.businessKey).then(res => {
if (res.data.eduFilePath) {
let files = res.data.eduFilePath.split('/');
res.data.eduFileName = files[files.length - 1];
}
if(res.data.user.userInfos){
res.data.user.userInfos = JSON.parse(res.data.user.userInfos);
}
this.setData({
infoData: res.data,
fileNames: fileNames,
minImageList: imgList,
stopShow: !this.data.options.finishTime && this.data.options.startUserId == app.globalData.userData.userId,
deleteShow: !this.data.options.finishTime && this.data.options.startUserId == app.globalData.userData.userId,
revocationShow: !this.data.options.finishTime
subDeptUserData: res.data
})
//查询单位信息
this.getSubDeptInfo(res.data.subDeptId);
})
},
//查询审批表单参数
getSubDeptInfo(subDeptId) {
findProSubDeptsInfoById(subDeptId).then(res => {
res.data.subDeptInfos = JSON.parse(res.data.subDeptInfos);
this.setData({
subDeptData: res.data
})
})
},
@ -283,7 +281,7 @@ Page({
} = e.currentTarget.dataset.set
wx.downloadFile({
// 示例 url并非真实存在
url: config.baseUrl + '/common/download/resource?resource=' + path,
url: config.baseUrl + '/file/download?fileName=' + path,
success: function (res) {
const filePath = res.tempFilePath
let fpt = filePath.split(".");

View File

@ -25,145 +25,284 @@
<view class="inspect_list_title">
<view class="inspect_list_title_label inspect_list_title_width">
<view class="inspect_list_title_number">{{(flowRecordList.length-index) < 9 ?'0'+(flowRecordList.length-index):(flowRecordList.length-index)}}</view>
<view class="module_title module_title_flex inspect_list_title_text">{{item.taskName}}{{item.commentResult}}
<text wx:if="{{item.commentResult=='通过'}}" class="timeline_for_state_1 color_green">{{item.commentResult}}</text>
<text wx:if="{{item.commentResult=='驳回'}}" class="timeline_for_state_2 color_purple">{{item.commentResult}}</text>
</view>
<view class="module_title module_title_flex inspect_list_title_text">{{item.taskName}}{{item.commentResult}}
<text wx:if="{{item.commentResult=='通过'}}" class="timeline_for_state_1 color_green">{{item.commentResult}}</text>
<text wx:if="{{item.commentResult=='委派'}}" class="timeline_for_state_1 color_blue">{{item.commentResult}}</text>
<text wx:if="{{item.commentResult=='转办'}}" class="timeline_for_state_1 color_blue">{{item.commentResult}}</text>
<text wx:if="{{item.commentResult=='驳回'}}" class="timeline_for_state_2 color_purple">{{item.commentResult}}</text>
<text wx:if="{{item.commentResult=='退回'}}" class="timeline_for_state_2 color_purple">{{item.commentResult}}</text>
</view>
</view>
<view class="inspect_list_info gk_open_con">
<view wx:if="{{item.assigneeName}}">
<image src="/images/lw_3.png"></image>办理用户:<text>{{item.assigneeName}}</text>
</view>
<view wx:if="{{item.assigneeName}}">
<image src="/images/s_1.png"></image>办理单位:<text class="color_blue">{{item.deptName}}</text>
</view>
<view wx:if="{{item.candidate}}">
<image src="/images/s_2.png"></image>候选办理:<text>{{item.candidate}}</text>
</view>
<view wx:if="{{item.deleteReason}}">
<image src="/images/s_18.png"></image>驳回节点:<text>{{item.deleteReason}}</text>
</view>
<view>
<image src="/images/s_6.png"></image>接收时间:<text>{{item.startTime}}</text>
</view>
<view wx:if="{{item.endTime}}">
<image src="/images/lw_8.png"></image>处理时间:<text>{{item.endTime}}</text>
</view>
<view wx:if="{{item.duration}}">
<image src="/images/img_11.png"></image>处理耗时:<text>{{item.duration}}</text>
</view>
<view wx:if="{{item.message}}">
<image src="/images/s_7.png"></image>处理意见:<text>{{item.message}}</text>
</view>
</view>
<view class="inspect_list_info gk_open_con">
<view wx:if="{{item.assigneeName}}">
<image src="/images/lw_3.png"></image>办理用户:<text>{{item.assigneeName}}</text>
</view>
<view wx:if="{{item.assigneeName}}">
<image src="/images/s_1.png"></image>办理单位:<text class="color_blue">{{item.deptName}}</text>
</view>
<view wx:if="{{item.candidate}}">
<image src="/images/s_2.png"></image>候选办理:<text>{{item.candidate}}</text>
</view>
<view wx:if="{{item.deleteReason}}">
<image src="/images/s_18.png"></image>驳回节点:<text>{{item.deleteReason}}</text>
</view>
<view>
<image src="/images/s_6.png"></image>接收时间:<text>{{item.startTime}}</text>
</view>
<view wx:if="{{item.endTime}}">
<image src="/images/lw_8.png"></image>处理时间:<text>{{item.endTime}}</text>
</view>
<view wx:if="{{item.duration}}">
<image src="/images/img_11.png"></image>处理耗时:<text>{{item.duration}}</text>
</view>
<view wx:if="{{item.message}}">
<image src="/images/s_7.png"></image>处理意见:<text>{{item.message}}</text>
</view>
</view>
</view>
</view>
</view>
</van-collapse-item>
</van-collapse>
</view>
</view>
<view class="inspect_info">
<view class="inspect_overview_list">
<van-row>
<van-col span="6"><text class="color_purple">临建项目</text></van-col>
<van-col span="18" class="color_orange">{{ options.projectName||options.businessKeyName }}</van-col>
</van-row>
<view class="module_title module_title_padding">
<view>{{subDeptData.projectName}}</view>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="6"><text class="color_purple">使用单位</text></van-col>
<van-col span="18" class="color_blue">{{infoData.createByDeptName}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="6"><text class="color_purple">使用时间</text></van-col>
<van-col span="18">{{infoData.useTime}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="6"><text class="color_purple">申请原因</text></van-col>
<van-col span="18">{{infoData.applyReason}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{minImageList.length>0 || fileNames.length>0}}">
<van-row>
<van-col span="6"><text class="color_purple">申请附件</text></van-col>
<view class="problem_list_info_con in-img-max" wx:if="{{minImageList.length>0}}">
<view class="in-img-div" wx:for="{{minImageList}}" wx:key="index">
<image bindtap='showImg' data-set="{{item.path}}" src='{{item.murl}}'></image>
</view>
<view class="inspect_info" wx:if="{{options.category=='1' || options.category=='2' || options.category=='3' || options.category=='4'}}">
<view class="inspect_overview_list">
<van-row>
<van-col span="8"><text class="color_purple">项目单位</text></van-col>
<van-col span="16" class="color_orange">{{ subDeptData.projectName}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="8"><text class="color_purple">单位类型</text></van-col>
<van-col span="16" class="color_blue">{{subDeptData.subDeptTypeName}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="8"><text class="color_purple">单位名称</text></van-col>
<van-col span="16">{{subDeptData.subDeptName}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{options.category=='1'}}">
<van-row>
<van-col span="8"><text class="color_purple">信用代码</text></van-col>
<van-col span="16">{{subDeptData.subDeptCode}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{options.category=='1'}}">
<van-row>
<van-col span="8"><text class="color_purple">营业执照</text></van-col>
<van-col span="16">
<view class="problem_list_info_con in-img-max">
<view class="in-img-div" wx:key="index">
<image bindtap='showImg' data-set="{{subDeptData.businessLicensePath}}" src="{{imgBaseUrl+subDeptData.businessLicensePath+'.min.jpg'}}"></image>
</view>
</view>
</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{options.category=='1'}}">
<van-row>
<van-col span="8"><text class="color_purple">法人姓名</text></van-col>
<van-col span="16">{{subDeptData.subDeptInfos.legalPerson}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{options.category=='1'}}">
<van-row>
<van-col span="8"><text class="color_purple">法人身份证</text></van-col>
<van-col span="16">{{subDeptData.subDeptInfos.legalPersonCard}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{options.category=='1'}}">
<van-row>
<van-col span="8"><text class="color_purple">法人证件</text></van-col>
<van-col span="16">
<view class="problem_list_info_con in-img-max">
<view class="in-img-div" wx:key="index">
<image bindtap='showImg' data-set="{{subDeptData.subDeptInfos.legalPersonCardImgPos}}" src="{{imgBaseUrl+subDeptData.subDeptInfos.legalPersonCardImgPos+'.min.jpg'}}"></image>
<image bindtap='showImg' data-set="{{subDeptData.subDeptInfos.legalPersonCardImgInv}}" src="{{imgBaseUrl+subDeptData.subDeptInfos.legalPersonCardImgInv+'.min.jpg'}}"></image>
</view>
</view>
</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{options.category=='1'}}">
<van-row>
<van-col span="8"><text class="color_purple">进入场地时间</text></van-col>
<van-col span="16">{{subDeptData.useDates}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{options.category=='1'}}">
<van-row>
<van-col span="8"><text class="color_purple">计划开工时间</text></van-col>
<van-col span="16">{{subDeptData.startWorkDates}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{options.category=='1'}}">
<van-row>
<van-col span="8"><text class="color_purple">计划完工时间</text></van-col>
<van-col span="16">{{subDeptData.endWorkDates}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{options.category=='1'}}">
<van-row>
<van-col span="8"><text class="color_purple">合同约定范围</text></van-col>
<van-col span="16">{{subDeptData.contractInfos}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="8">
<text wx:if="{{options.category=='1'}}" class="color_purple">委托代理人</text>
<text wx:if="{{options.category!='1'}}" class="color_purple">人员姓名</text>
</van-col>
<van-col span="16">{{subDeptUserData.user.nickName}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="8">
<text wx:if="{{options.category=='1'}}" class="color_purple">代理人身份证</text>
<text wx:if="{{options.category!='1'}}" class="color_purple">身份证号码</text>
</van-col>
<van-col span="16">{{subDeptUserData.user.cardCode}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{options.category!='1'}}">
<van-row>
<van-col span="8">
<text class="color_purple">工种岗位</text>
</van-col>
<van-col span="16">{{subDeptUserData.craftPostName}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{options.category!='1' && options.category!='2'}}">
<van-row>
<van-col span="8">
<text class="color_purple">工种班组</text>
</van-col>
<van-col span="16">{{subDeptUserData.subDeptGroupName}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{options.category!='1'}}">
<van-row>
<van-col span="8"><text class="color_purple">所属民族</text></van-col>
<van-col span="16">{{subDeptUserData.user.userInfos.nativePlace}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{options.category!='1'}}">
<van-row>
<van-col span="8"><text class="color_purple">详细地址</text></van-col>
<van-col span="16">{{subDeptUserData.user.userInfos.address}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="8">
<text wx:if="{{options.category=='1'}}" class="color_purple">代理人证件</text>
<text wx:if="{{options.category!='1'}}" class="color_purple">人员证件照</text>
</van-col>
<van-col span="16">
<view class="problem_list_info_con in-img-max">
<view class="in-img-div" wx:key="index">
<image bindtap='showImg' data-set="{{subDeptUserData.user.cardImgPos}}" src="{{imgBaseUrl+subDeptUserData.user.cardImgPos+'.min.jpg'}}"></image>
<image bindtap='showImg' data-set="{{subDeptUserData.user.cardImgInv}}" src="{{imgBaseUrl+subDeptUserData.user.cardImgInv+'.min.jpg'}}"></image>
</view>
</view>
</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="8"><text class="color_purple">花名册近照</text></van-col>
<van-col span="16">
<view class="problem_list_info_con in-img-max">
<view class="in-img-div" wx:key="index">
<image bindtap='showImg' data-set="{{subDeptUserData.user.userPicture}}" src="{{imgBaseUrl+subDeptUserData.user.userPicture+'.min.jpg'}}"></image>
</view>
</view>
</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{options.category!='4'}}">
<van-row>
<van-col span="8"><text class="color_purple">单位委托书</text></van-col>
<van-col span="16">
<view class="problem_list_info_con in-img-max">
<view class="in-img-div" wx:key="index">
<image bindtap='showImg' data-set="{{subDeptUserData.subDeptPowerPath}}" src="{{imgBaseUrl+subDeptUserData.subDeptPowerPath+'.min.jpg'}}"></image>
</view>
</view>
</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="8"><text class="color_purple">联系电话</text></van-col>
<van-col span="16">{{subDeptUserData.user.phonenumber}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{options.category!='1'}}">
<van-row>
<van-col span="8"><text class="color_purple">紧急联系人</text></van-col>
<van-col span="16">{{subDeptUserData.user.userInfos.emergencyContact}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{options.category!='1'}}">
<van-row>
<van-col span="8"><text class="color_purple">紧急联系电话</text></van-col>
<van-col span="16">{{subDeptUserData.user.userInfos.contactPhone}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{options.category=='4'}}">
<van-row>
<van-col span="8"><text class="color_purple">开户行名称</text></van-col>
<van-col span="16">{{subDeptUserData.user.userInfos.bankName}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{options.category=='4'}}">
<van-row>
<van-col span="8"><text class="color_purple">开户行网点</text></van-col>
<van-col span="16">{{subDeptUserData.user.userInfos.bankOffice}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{options.category=='4'}}">
<van-row>
<van-col span="8"><text class="color_purple">工资银行卡号</text></van-col>
<van-col span="16">{{subDeptUserData.user.userInfos.bankCardNo}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">高血压、心脏病等基础身体健康问题
</view>
<van-col span="18" class="color_blue" wx:if="{{fileNames.length>0}}">
<view class="files" wx:for="{{fileNames}}" wx:key="index">
<text data-set="{{item}}" style="word-wrap: break-word;" bindtap='downFile'>{{item.name}}</text>
</view>
</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="6"><text class="color_purple"> 申 请 人 </text></van-col>
<van-col span="18">{{infoData.createBy}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="6"><text class="color_purple">申请时间</text></van-col>
<van-col span="18">{{infoData.createTime}}</van-col>
</van-row>
</view>
</view>
<view>
<view class="inspect_info" wx:for="{{infoData.proProjectApplyDetailList}}" wx:key="index">
<view class="module_title module_title_flex">
<view class="text_active">申请明细 {{ format.indexNumFormat(index) }}</view>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="6"><text class="color_purple">申请明细</text></van-col>
<van-col span="18">{{item.typeName + ' > '+ item.assetsName }}</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="6"><text class="color_purple">申请数量</text></van-col>
<van-col span="18">{{item.number + ' '+ item.assetsUnit }}</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{item.assetsVersion}}">
<van-row>
<van-col span="6"><text class="color_purple">规格型号</text></van-col>
<van-col span="18">{{item.assetsVersion }}</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{item.assetsVersion}}">
<van-row>
<van-col span="6"><text class="color_purple">使用说明</text></van-col>
<van-col span="18">{{ item.useReason }}</van-col>
</van-row>
</view>
</view>
</view>
<view wx:if="{{stopBtnShow}}">
<view class="inspect_info">
<view class="inspect_overview_list">
<view class="inspect_overview_title" style="padding: 20rpx 0 10rpx;">终止原因</view>
<view class="inspect_overview_content">
<textarea class="add_textarea" placeholder="请填写终止原因500字内" placeholder-style="color:#6777aa;" maxlength="500" bindinput="commentblur" />
<view class="inspect_info_content">
<text wx:if="{{subDeptUserData.illnessStatus=='0'}}" class="code_label_2 code_label_green" style="padding: 5rpx 50rpx;font-size: 25rpx;">无</text>
<text wx:if="{{subDeptUserData.illnessStatus!='0'}}" class="code_label_2 code_label_red" style="padding: 5rpx 50rpx;font-size: 25rpx;">有</text>
</view>
</view>
<view class="inspect_overview_list">
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">严重呼吸系统疾病、严重心脑血管疾病、肝肾疾病、恶性肿瘤以及药物无法有效控制的高血压和糖尿病等基础性病症状征兆
</view>
<view class="inspect_info_content">
<text wx:if="{{subDeptUserData.supIllnessStatus=='0'}}" class="code_label_2 code_label_green" style="padding: 5rpx 50rpx;font-size: 25rpx;">无</text>
<text wx:if="{{subDeptUserData.supIllnessStatus!='0'}}" class="code_label_2 code_label_red" style="padding: 5rpx 50rpx;font-size: 25rpx;">有</text>
</view>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="8"><text class="color_purple">安全承诺书</text></van-col>
<van-col span="16" class="color_blue">
<view class="files">
<text data-set="{{subDeptUserData.eduFilePath}}" style="word-wrap: break-word;" bindtap='downFile'>点击下载安全承诺书</text>
</view>
</van-col>
</van-row>
</view>
</view>
</view>
<view class="problem_submit_to">
<view wx:if="{{stopShow}}" class="problem_submit_to_btn problem_submit_to_warning" bindtap="onStop">终止</view>
<view wx:if="{{false}}" class="problem_submit_to_btn problem_submit_to_delete" bindtap="onDelete">删除</view>
<view wx:if="{{revocationShow}}" class="problem_submit_to_btn problem_submit_to_save" bindtap="onRevocation">撤回</view>
</view>
</view>

View File

@ -0,0 +1,270 @@
import config from '../../../config'
import {
getToken
} from '../../../utils/auth'
import {
quueryCount,
myAwaitFlowTaskList,
myFinishedFlowTaskList,
} from '../../../api/flowable'
const app = getApp()
Page({
/**
* 页面的初始数据
*/
data: {
projectId:'',
projectName:'',
initData: {},
activeState:"dsh",
dshCount:0,
yshCount:0,
listData:[],
pageNum:1,
pageSize:10,
total:0,
imgBaseUrl: config.baseImgUrl
},
//项目切换 返回值
onProjectSelect(e) {
let projectId = e.detail.id;
let projectName = e.detail.text;
app.globalData.useProjectId = projectId;
app.globalData.useProjectName = projectName;
this.onLoad();
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
if (getToken()) {
this.setData({
pageNum:1,
pageSize:10,
lastDataSize:10,
listData:[],
total:0,
dshCount:0,
yshCount:0,
activeState:"dsh",
projectId: app.globalData.useProjectId,
projectName: app.globalData.useProjectName,
initData: {
id: app.globalData.useProjectId,
text: app.globalData.useProjectName,
}
});
this.getListData();
this.getFlowableCount();
} else {
console.log("未查询到Token...{}...准备重新登录")
wx.redirectTo({
url: '../login/login',
})
}
},
/**
* 查询列表数据
*/
getListData(){
let params = "pageNum=" + this.data.pageNum + "&pageSize=" + this.data.pageSize+"&activeTags=depts&startProId="+app.globalData.useProjectId;
if(this.data.activeState=='dsh'){
myAwaitFlowTaskList(params).then(res =>{
if (res.code == "200") {
res.rows.forEach(item =>{
item.businessImg = this.data.imgBaseUrl+item.businessImg;
item.durationStr = this.getDurationDate(item.duration);
});
this.setData({
total: res.total,
listData: this.data.listData.concat(res.rows)
})
}
});
}else{
myFinishedFlowTaskList(params).then(res =>{
if (res.code == "200") {
res.rows.forEach(item =>{
item.businessImg = this.data.imgBaseUrl+item.businessImg;
item.durationStr = this.getDurationDate(item.duration);
});
this.setData({
total: res.total,
listData: this.data.listData.concat(res.rows)
})
}
});
}
},
/**
* 统计分包单位数据
*/
getFlowableCount(){
let params = "activeTags=depts&startProId="+app.globalData.useProjectId;
quueryCount(params).then(res => {
if(res.code==200){
this.setData({
dshCount: res.data.await,
yshCount: res.data.finished
})
}
});
},
/**
* 统计审批数据
*/
onScrollToLower() {
let nal = Math.ceil(this.data.total / this.data.pageSize);
if (this.data.pageNum < nal) {
this.setData({
pageNum: this.data.pageNum + 1
});
this.getListData();
}
},
/**
* 切换页签数据
*/
switchTabJump(e){
let index = e.currentTarget.dataset.index;
let nav = "";
if(index == 1){
nav = 'dsh';
}else{
nav = 'ysh';
}
if(nav!=this.data.activeState){
this.setData({
activeState:nav,
pageNum:1,
pageSize:10,
listData:[],
});
this.getListData();
}
},
/**
* 点击栏目
* @param {*} e
*/
findDetail(e){
let {taskId,procInsId,deployId,category,businessKey,finishTime} = e.currentTarget.dataset.set
wx.setStorageSync('nav-types', "depts");
if(finishTime){
//详情页面
wx.redirectTo({
url: `../detailTask/index?taskId=${taskId}&procInsId=${procInsId}&deployId=${deployId}&category=${category}&businessKey=${businessKey}`
})
}else{
//审批页面
wx.redirectTo({
url: `../approveTask/index?taskId=${taskId}&procInsId=${procInsId}&deployId=${deployId}&category=${category}&businessKey=${businessKey}`
})
}
},
/**
* 办理时间计算
* @param {*} val
*/
getDurationDate(val){
let day=0;
let hours=0;
let min = val;
if(min>1440){
day = parseInt(min/1440);
min = min % 1440;
if(min>60){
hours = parseInt(min/60);
min = min % 60;
}
}else if(min>60){
hours = parseInt(min/60);
min = min % 60;
}
if(day>0){
if(day<10) day="0"+day;
if(hours<10) hours="0"+hours;
if(min<10) min="0"+min;
return day+"天"+hours+"小时"+min+"分钟";
}
if(hours>0){
if(hours<10) hours="0"+hours;
if(min<10) min="0"+min;
return hours+"小时"+min+"分钟";
}
if(min>0){
if(min<10) min="0"+min;
return min+"分钟";
}
if(min==0){
return "1分钟";
}
},
/**
* 返回页面
*/
returnToPage: function () {
wx.redirectTo({
url: '../../project_more/index',
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})

View File

@ -0,0 +1,57 @@
<view class="header_title">
<view class="header_title_row">
<van-row>
<van-col span="4">
<view class="header_img" bindtap="returnToPage">
<image src="/images/left.png"></image>
</view>
</van-col>
<van-col span="15">
<view class="header_name">分包单位审核</view>
</van-col>
</van-row>
</view>
</view>
<scroll-view class="max_content_scroll" type="list" scroll-y bindscrolltolower="onScrollToLower">
<project-select init="{{initData}}" bindchange="onProjectSelect" id="projectSel"></project-select>
<view class="modify_video_nav" style="margin-top: 5rpx;">
<view class="{{activeState=='dsh'?'active':''}}" bindtap="switchTabJump" data-index="1"><text>待审核({{dshCount}}</text></view>
<view class="{{activeState=='ysh'?'active':''}}" bindtap="switchTabJump" data-index="2"><text>已审核({{yshCount}}</text></view>
</view>
<view class="inspect_max_scroll">
<!--专项检查样式zxjc-->
<view class="inspect_for_scroll" v-if="{{ listData.length>0 }}" wx:for="{{listData}}" wx:key="index" data-set="{{item}}" bindtap="findDetail">
<view class="inspect_for_bgd">
<view class="inspect_list_title">
<view class="inspect_list_title_label inspect_list_title_width">
<view class="inspect_list_title_number">{{index < 9 ?'0'+(index+1):(index+1)}}</view>
<view class="module_title_3 module_title_flex">
<text wx:if="{{!item.endTime}}" class="color_purple">申请时间 {{item.createTime}}</text>
<text wx:if="{{item.endTime}}" class="color_purple">办结时间 {{item.endTime}}</text>
</view>
</view>
</view>
<view class="inspect_list_info">
<view class="inspect_list_info_details">
<view class="inspect_list_info_img">
<van-image width="120rpx" height="120rpx" fit="cover" src="{{item.businessImg+'.min.jpg'}}" />
</view>
<view class="inspect_list_info_data">
<view class="inspect_list_info_data_prop color_blue">单位类型:<text>{{item.businessMk2}}</text></view>
<view class="inspect_list_info_data_prop">单位名称:<text>{{item.businessMk1}}</text></view>
<view class="inspect_list_info_data_prop">信用代码:<text>{{item.businessMk3}}</text></view>
<view class="inspect_list_info_data_prop color_orange">处理耗时:{{item.durationStr}}</view>
</view>
</view>
</view>
</view>
</view>
<view wx:if="{{listData.length==0}}">
<view style="padding-top: 70px;text-align: -webkit-center;">
<image src="https://szgcwx.jhncidg.com/staticFiles/nodata.png" style="width: 130px;height: 105px;"></image>
<view style="color: #a5abbb;">暂无数据</view>
</view>
</view>
</view>
</scroll-view>

View File

@ -0,0 +1 @@
/* pages/project_flowable/subDepts/index.wxss */

View File

@ -0,0 +1,66 @@
// pages/project_flowable/subDeptsUsers/index.js
Page({
/**
* 页面的初始数据
*/
data: {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})

View File

@ -0,0 +1,3 @@
{
"usingComponents": {}
}

View File

@ -0,0 +1,2 @@
<!--pages/project_flowable/subDeptsUsers/index.wxml-->
<text>pages/project_flowable/subDeptsUsers/index.wxml</text>

View File

@ -0,0 +1 @@
/* pages/project_flowable/subDeptsUsers/index.wxss */

View File

@ -1,4 +1,3 @@
import * as echarts from '../../ec-canvas/echarts';
import config from '../../config'
import {
getToken
@ -14,9 +13,7 @@ import {
findUsersAttendanceView,
findSubDeptsAttendanceView
} from '../../api/attendance'
const app = getApp();
Page({
/**
* 页面的初始数据
@ -47,38 +44,8 @@ Page({
"iconSrc": "https://guangzhou.sxyanzhu.com/YZLJXM/profile/icon/zbdw.png"
}],
active: 0,
show: false,
ec_1: {
lazyLoad: true //动态加载
},
ec_2: {
lazyLoad: true
},
ec_3: {
lazyLoad: true
},
//参数——————————————————————————————————————
//组织架构id
deptId: '',
//项目的id
projectId: '',
//项目名称参数
projectNameArgs: '',
//视频接入数
videoNum: '',
//正常视频数
videoOnline: '',
//机械接入数
machineryNum: '',
//正常机械运行数
machineryOnline: '',
monthEarlyNum: '0',
yangchenCount: '0',
weather: '',
weatherPic: '',
temperature: '',
//加载模板参数
loadShow: false,
projectName: '',
initData: {},
todoDb: 0,
approveDb: 0,
@ -149,101 +116,15 @@ Page({
]
},
switchChart: false,
attendanceListData:[],
subDeptUserInfo:{},
imgBaseUrl:config.baseImgUrl
},
// 事件委托
selectedTab(e) {
this.setData({
nactive: e.target.dataset.set,
labourImg: this.data.labourTypeList[e.target.dataset.set].img,
})
this.initSubDeptUsersCharts();
},
//项目切换 返回值
onProjectSelect(e) {
this.onClickShow();
let projectId = e.detail.id;
let projectName = e.detail.text;
app.globalData.projectId = projectId;
app.globalData.projectName = projectName;
this.setData({
switchChart: true,
projectId: projectId,
projectName: projectName
})
this.onLoad();
},
// 手风琴
onCollChange(event) {
this.setData({
activeNames: event.detail,
});
},
//初始化视频监控饼图数据
init_one: function (datas_1) {
this.oneComponent.init((canvas, width, height, dpr) => {
const chart = echarts.init(canvas, null, {
width: width,
height: height,
devicePixelRatio: dpr //解决小程序视图模糊的问题,必写
});
initChart_1(chart, datas_1);
this.chart = chart;
return chart;
});
},
//初始化机械设备饼图数据
init_two: function (datas_2, datas_name) {
this.twoComponent.init((canvas, width, height, dpr) => {
const chart = echarts.init(canvas, null, {
width: width,
height: height,
devicePixelRatio: dpr //解决小程序视图模糊的问题,必写
});
initChart_2(chart, datas_2, datas_name);
this.chart = chart;
return chart;
});
},
//初始化劳务管理
init_three: function (xData_1, yData_1) {
this.threeComponent.init((canvas, width, height, dpr) => {
const chart = echarts.init(canvas, null, {
width: width,
height: height,
devicePixelRatio: dpr //解决小程序视图模糊的问题,必写
});
initChart_3(chart, xData_1, yData_1);
this.chart = chart;
return chart;
});
},
onClickShow() {
this.setData({
loadShow: false
});
},
onClickHide() {
this.setData({
loadShow: false
});
attendanceListData: [],
subDeptUserInfo: {},
imgBaseUrl: config.baseImgUrl
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
console.log("config.imgBaseUrl",config.baseImgUrl,this.data.imgBaseUrl)
this.setData({
labourImg: this.data.labourTypeList[this.data.nactive].img,
});
@ -380,6 +261,10 @@ Page({
"labourData[2].yesMonitor": lw,
labourTotal: this.data.labourTypeList[this.data.nactive].total
})
if (this.data.switchChart) {
let chats = this.selectComponent("#userChart");
chats.initChart();
}
}
},
@ -412,6 +297,10 @@ Page({
"labourDays[2].yesMonitor": lw,
labourDaysTotal: gl + ts + lw
})
if (this.data.switchChart) {
let chats = this.selectComponent("#attsChart");
chats.initChart();
}
}
});
},
@ -460,9 +349,9 @@ Page({
* 查询用户考勤
* @param {*} proId
*/
getUsersAttendanceView(proId){
findUsersAttendanceView(proId).then(res =>{
if(res.code==200){
getUsersAttendanceView(proId) {
findUsersAttendanceView(proId).then(res => {
if (res.code == 200) {
this.setData({
attendanceListData: res.data
});
@ -474,8 +363,9 @@ Page({
* 查询单位人员信息
* @param {*} proId
*/
getProSubDeptsUserInfo(proId){
findProSubDeptsUserByParams(proId).then(res =>{
getProSubDeptsUserInfo(proId) {
findProSubDeptsUserByParams(proId).then(res => {
app.globalData.subDeptUserData = res.data;
this.setData({
subDeptUserInfo: res.data
});
@ -586,134 +476,32 @@ Page({
});
},
//加载天气数据
getWeatherData: function (even1, even2) {
var that = this;
wx.request({
url: app.globalData.reqUrl + '/weixin/applets/selectWeather',
method: "GET",
data: {
lng: even1,
lat: even2,
},
success: function (weatherRes) {
that.setData({
weather: weatherRes.data.weather,
weatherPic: weatherRes.data.weatherPic,
temperature: weatherRes.data.temperature
})
}
// 页签选中事件
selectedTab(e) {
this.setData({
nactive: e.target.dataset.set,
labourImg: this.data.labourTypeList[e.target.dataset.set].img,
})
this.initSubDeptUsersCharts();
},
// 获取项目下的视频数
getProjectVideoAll: function (even) {
wx.request({
url: app.globalData.reqUrl + '/weixin/video/getProjectVideoNum',
method: 'get',
data: {
projectName: even
},
success: resData => {
this.setData({
videoNum: resData.data.videoAll,
videoOnline: resData.data.videoOnline
})
}
//项目切换 返回值
onProjectSelect(e) {
let projectId = e.detail.id;
let projectName = e.detail.text;
app.globalData.useProjectId = projectId;
app.globalData.useProjectName = projectName;
this.setData({
switchChart: true
})
this.onLoad();
},
// 获取机械的数据
getMachineryNum: function (event) {
wx.request({
url: app.globalData.reqUrl + '/mkl/machinery/getMachineryDataWest',
data: {
"projectId": event
},
method: 'get',
success: resData => {
this.setData({
machineryNum: resData.data.allNum,
machineryOnline: resData.data.onlineNum
})
}
})
},
//机械的列表,名称
getMachineryList: function (event) {
var that = this;
wx.request({
url: app.globalData.reqUrl + '/mkl/machinery/getMachineryListWest',
data: {
"projectId": event
},
method: 'GET',
success: resData => {
if (resData.data == '') {
that.init_two([{
"value": "0",
"name": ""
}]);
} else {
that.init_two(resData.data);
}
}
})
},
//获取视频的列表,名称
getVideoList: function (even) {
var that = this;
wx.request({
url: app.globalData.reqUrl + '/weixin/video/getProjectVideoListEc',
method: 'GET',
data: {
projectName: even
},
success: resData => {
that.onClickHide();
if (resData.data.length > 0) {
that.init_one(resData.data);
}
}
})
},
//查询劳务人员出勤数据
selectEnvirData: function (even) {
var that = this;
wx.request({
url: app.globalData.reqUrl + '/weixin/userinfo/selectAttendanceNum',
method: "GET",
data: {
projectId: even,
},
success: function (hjyj) {
that.setData({
monthEarlyNum: hjyj.data.userCount,
yangchenCount: hjyj.data.userCount
})
}
})
//查询出最近一周劳务人员考勤人数
wx.request({
url: app.globalData.reqUrl + '/weixin/userinfo/selectLabourDayByProjectId',
method: "GET",
data: {
projectId: even
},
success: function (sspm) {
var createTime = [];
var userCount = [];
for (var i = 0; i < sspm.data.length; i++) {
createTime.push(sspm.data[i].createTime);
userCount.push(sspm.data[i].userCount);
}
that.init_three(createTime, userCount);
}
})
// 手风琴
onCollChange(event) {
this.setData({
activeNames: event.detail,
});
},
/**
@ -790,7 +578,14 @@ Page({
//跳转到更多功能
GDGN: function () {
wx.redirectTo({
url: '../gengduogongneng/index'
url: '../project_more/index'
})
},
//跳转到项目列表
XMLB: function () {
wx.redirectTo({
url: '../project_list/index'
})
},

View File

@ -2,16 +2,12 @@
"usingComponents": {
"van-row": "@vant/weapp/row",
"van-col": "@vant/weapp/col",
"van-action-sheet": "@vant/weapp/action-sheet",
"van-sticky": "@vant/weapp/sticky",
"van-tabbar": "@vant/weapp/tabbar",
"van-tabbar-item": "@vant/weapp/tabbar-item",
"van-popup": "@vant/weapp/popup/index",
"van-collapse": "@vant/weapp/collapse",
"van-collapse-item": "@vant/weapp/collapse-item",
"ec-canvas": "../../ec-canvas/ec-canvas",
"van-notice-bar": "@vant/weapp/notice-bar",
"van-overlay": "@vant/weapp/overlay/index"
"van-notice-bar": "@vant/weapp/notice-bar"
},
"navigationStyle":"custom"
}

View File

@ -1,15 +1,21 @@
<wxs module="format" src="/utils/format.wxs"></wxs>
<view class="header_title">
<view class="header_title_row">
<van-row>
<van-col span="5">
<user-infos id="userInfos"></user-infos>
</van-col>
<van-col span="14">
<view class="header_name">{{title}}</view>
</van-col>
</van-row>
</view>
<view class="header_title_row">
<van-row>
<van-col span="4">
<view class="header_img" bindtap="XMLB">
<image src="/images/left.png"></image>
<text class="header_fh">返回</text>
</view>
</van-col>
<van-col span="3">
<user-infos></user-infos>
</van-col>
<van-col span="10">
<view class="header_name">{{title}}</view>
</van-col>
</van-row>
</view>
</view>
<!-- 中间内容 -->
@ -101,7 +107,7 @@
</view>
</van-col>
<van-col span="16">
<safety-bar-chart chart-id="chart2" data="{{labourData}}" height="350"></safety-bar-chart>
<safety-bar-chart id="userChart" chart-id="userChart" data="{{labourData}}" height="350"></safety-bar-chart>
</van-col>
</van-row>
</view>
@ -131,7 +137,7 @@
</view>
</van-col>
<van-col span="16">
<safety-bar-chart chart-id="chart2" data="{{labourDays}}" height="350"></safety-bar-chart>
<safety-bar-chart id="attsChart" chart-id="attsChart" data="{{labourDays}}" height="350"></safety-bar-chart>
</van-col>
</van-row>
</view>
@ -264,11 +270,4 @@
<span class="tabNum" wx:if="{{todoDb>0}}">{{todoDb}}</span>
</van-tabbar-item>
</van-tabbar>
<van-overlay show="{{loadShow}}">
<view class="gif">
<image src="../../images/loding2.gif"></image>
<view>数据加载中!请稍后...</view>
</view>
</van-overlay>
</van-tabbar>

View File

@ -183,6 +183,7 @@
display: flex;
align-items: center;
justify-content: center;
margin-top: 15px;
}
.survey_content_img {

View File

@ -0,0 +1,156 @@
import {
getToken
} from '../../utils/auth'
import {
findUserMenuList
} from '../../api/publics'
const app = getApp()
Page({
/**
* 页面的初始数据
*/
data: {
active:4,
projectId:'',
projectName:'' ,
loginName:'',
remark:'',
roleId:'',
roleName:'',
menuList:[],
initData:{},
hiddenn:true,
todoDB:0,
lzyjDB:0,
approveDB:0,
ad:0,
todoDb:0,
aq:0,
},
//项目切换 返回值
onProjectSelect(e){
let projectId = e.detail.id;
let projectName = e.detail.text;
app.globalData.useProjectId = projectId;
app.globalData.useProjectName = projectName;
this.onLoad();
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
if (getToken()) {
this.setData({
userData: app.globalData.userData,
projectId: app.globalData.useProjectId,
projectName: app.globalData.useProjectName,
initData: {
id: app.globalData.useProjectId,
text: app.globalData.useProjectName,
}
});
//用户权限菜单
this.getUserMenuList(app.globalData.useProjectId);
} else {
console.log("未查询到Token...{}...准备重新登录")
wx.redirectTo({
url: '../login/login',
})
}
},
/**
* 查询功能菜单
* @param {*} proId
*/
getUserMenuList:function(proId){
findUserMenuList(proId,'gdgn').then(res =>{
if(res.code==200){
this.setData({
menuList:res.data
})
}
});
},
goMenu:function(event){
wx.redirectTo({
url: event.currentTarget.dataset.url
})
//wx.navigateToMiniProgram({
// appId: 'wx7c39a25db91228f7',
// path: 'pages/tabbar/order-new/index?type=0'
//})
},
// 底部导航
onChange(event) {
// event.detail 的值为当前选中项的索引
this.setData({ active: event.detail });
},
//跳转到项目概况页面
XMGK:function(){
wx.redirectTo({
url: '../project_info/index'
})
},
//跳转到安全管理
AQGL:function(){
app.toast("正在建设中");
// wx.redirectTo({
// url:'../safety_manage/index'
// })
},
//跳转到质量管理
ZLGL:function(){
app.toast("正在建设中");
// wx.redirectTo({
// url:'../quality_manage/index'
// })
},
//跳转到进度管理
JDGL2:function(){
app.toast("正在建设中");
// wx.redirectTo({
// url:'../../pageage/project_schedule/list/index'
// })
},
//查询当前登录人的代办任务
awaitTask(minRoleId,deptId,loginName,userId) {
let param = {
"businessKey":app.globalData.projectId,
"nowRole":minRoleId,
"nowDept":deptId,
"nowUserName":loginName,
"nowUser":userId,
"activeName":"await"
}
var that = this;
wx.request({
url: app.globalData.reqUrl + '/wechat/flowTask/myAwaitFlowTaskListCount',
data:param,
method: "post",
success: function (res) {
res = res.data;
if(res.code=="200"){
that.setData({
todoDB:res.data.todo,
lzyjDB:res.data.approveLZYJ,
todoDb:res.data.todo,
ad:res.data.approve+res.data.zlCount,
aq:res.data.aqCount,
})
}
}
})
},
})

View File

@ -0,0 +1,7 @@
{
"usingComponents": {
"van-tabbar": "@vant/weapp/tabbar",
"van-tabbar-item": "@vant/weapp/tabbar-item"
},
"navigationStyle":"custom"
}

View File

@ -0,0 +1,119 @@
<view class="header_title">
<view class="header_title_row">
<van-row>
<van-col span="4">
<view class="header_img" bindtap="XMGK">
<image src="/images/left.png"></image>
<text class="header_fh">返回</text>
</view>
</van-col>
<van-col span="3">
<user-infos></user-infos>
</van-col>
<van-col span="10">
<view class="header_name">项目管理</view>
</van-col>
</van-row>
</view>
</view>
<view class="max_content">
<project-select init="{{initData}}" bindchange="onProjectSelect"></project-select>
<view class="gd_max" style="margin-top: 20rpx;">
<van-row class="demo clearfix">
<van-col span="8" wx:for="{{menuList}}" wx:key="unique">
<view class="gd_min" data-id="{{item.menuIdenti}}" data-url="{{item.menuUrl}}" bindtap="goMenu">
<span class="tabNum_active" wx:if="{{item.menuIdenti=='FBDWSH' && fbdwDB>0}}">{{fbdwDB}}</span>
<span class="tabNum_active" wx:if="{{item.menuIdenti=='FBRYSH' && fbrtDB>0}}">{{fbrtDB}}</span>
<image src="{{item.menuImg}}"></image>
<view>{{item.menuName}}</view>
</view>
</van-col>
</van-row>
</view>
</view>
<van-tabbar wx:if="{{userData.userType!='77'}}" active="{{ active }}" bind:change="onChange" active-color="#ffffff" inactive-color="#7d95d6">
<van-tabbar-item bindtap="XMGK">
<image
slot="icon"
src="/images/footer_5.png"
mode="aspectFit"
style="width:40rpx; height: 40rpx;"
/>
<image
slot="icon-active"
src="/images/foot_5.png"
mode="aspectFit"
style="width:40rpx; height: 40rpx;"
/>
项目概况
</van-tabbar-item>
<van-tabbar-item wx:if="{{userData.userType!='80' && userData.userType!='79' && userData.userType!='78' && userData.userType!='77'}}" bindtap="AQGL">
<image
slot="icon"
src="/images/footer_7.png"
mode="aspectFit"
style="width:40rpx; height: 40rpx;"
/>
<image
slot="icon-active"
src="/images/foot_7.png"
mode="aspectFit"
style="width:40rpx; height: 40rpx;"
/>
安全管理
<span class="tabNum" wx:if="{{aq>0}}">{{aq}}</span>
</van-tabbar-item>
<van-tabbar-item wx:if="{{userData.userType!='80' && userData.userType!='79' && userData.userType!='78' && userData.userType!='77'}}" bindtap="ZLGL">
<image
slot="icon"
src="/images/footer_5.png"
mode="aspectFit"
style="width:40rpx; height: 40rpx;"
/>
<image
slot="icon-active"
src="/images/foot_5.png"
mode="aspectFit"
style="width:40rpx; height: 40rpx;"
/>
质量管理
<span class="tabNum" wx:if="{{ad>0}}">{{ad}}</span>
</van-tabbar-item>
<van-tabbar-item wx:if="{{userData.userType!='80' && userData.userType!='79' && userData.userType!='78' && userData.userType!='77'}}" bindtap="JDGL2">
<image
slot="icon"
src="/images/footer_6.png"
mode="aspectFit"
style="width:40rpx; height: 40rpx;"
/>
<image
slot="icon-active"
src="/images/foot_6.png"
mode="aspectFit"
style="width:40rpx; height: 40rpx;"
/>
进度管理
</van-tabbar-item>
<van-tabbar-item>
<image
slot="icon"
src="/images/footer_1.png"
mode="aspectFit"
style="width:40rpx; height: 40rpx;"
/>
<image
slot="icon-active"
src="/images/foot_1.png"
mode="aspectFit"
style="width:40rpx; height:40rpx;"
/>
项目管理
<span class="tabNum" wx:if="{{todoDb>0}}">{{todoDb}}</span>
</van-tabbar-item>
</van-tabbar>

View File

@ -0,0 +1,23 @@
.more_max{
padding:10rpx 30rpx 30rpx;
}
.more_manage{
border-radius: 10rpx;
margin-top: 50rpx;
}
.gd_max{
padding:10rpx 50rpx 0;
}
.gd_min{
padding: 30rpx 0;
text-align: center;
}
.gd_min image{
width: 150rpx;
height: 150rpx;
}
.gd_min view{
padding: 10rpx;
color: #89a4eb;
}

View File

@ -0,0 +1,172 @@
import config from '../../config'
import {
getToken
} from '../../utils/auth'
import {
submitUserSign,
findUserSignList
} from '../../api/publics'
import {
securitySignFileUpload
} from '../../utils/request'
const app = getApp()
Page({
/**
* 页面的初始数据
*/
data: {
projectId: '',
projectName: '',
initData: {},
signData: {
id: null,
signetPath: null
},
signPath: '',
imgBaseUrl: config.baseImgUrl
},
//项目切换 返回值
onProjectSelect(e) {
let projectId = e.detail.id;
let projectName = e.detail.text;
app.globalData.useProjectId = projectId;
app.globalData.useProjectName = projectName;
this.onLoad();
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
if (getToken()) {
this.setData({
projectId: app.globalData.useProjectId,
projectName: app.globalData.useProjectName,
initData: {
id: app.globalData.useProjectId,
text: app.globalData.useProjectName,
}
});
this.getUserSignList(app.globalData.useProjectId);
} else {
console.log("未查询到Token...{}...准备重新登录")
wx.redirectTo({
url: '../login/login',
})
}
},
/**
* 获取签名
* @param {*} proId
*/
getUserSignList(proId) {
findUserSignList(proId).then(res => {
if (res.code == 200 && res.data.length > 0) {
this.setData({
signData: res.data[0]
});
}
})
},
/**
* 确认签名
*/
sign(e) {
let tempFilePath = e.detail
securitySignFileUpload(tempFilePath).then(res => {
if (res.code == 200) {
this.setData({
signPath: res.data.url
});
}
});
},
/**
* 确认修改签名
*/
submitSign() {
let {
projectId,
signPath,
signData
} = this.data;
//数据效验
if (!projectId) {
app.toast("信息异常...请刷新后重试!");
return false;
}
if (!signPath) {
app.toast("还未完成签名或修改,请签名后再试!");
return false;
}
let param = {
id: signData.id,
projectId: projectId,
signetPath: signPath
}
submitUserSign(param).then(res => {
if (res.code == 200) {
app.toast("保存签名成功!")
setTimeout(() => {
wx.redirectTo({
url: '../project_more/index',
})
}, 200)
}
});
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})

View File

@ -0,0 +1,5 @@
{
"usingComponents": {
},
"navigationStyle":"custom"
}

View File

@ -0,0 +1,31 @@
<view class="header_title">
<view class="header_title_row">
<van-row>
<van-col span="4">
<view class="header_img" bindtap="BACK">
<image src="/images/left.png"></image>
</view>
</van-col>
<van-col span="13">
<view class="header_name">个人签名配置</view>
</van-col>
</van-row>
</view>
</view>
<view class="max_content">
<project-select init="{{initData}}" bindchange="onProjectSelect"></project-select>
<view class="echarts_max">
<view class="echarts_min">
<view class="eharts_title module_title_flex">
我的签名<text style="font-size: small; color: antiquewhite;">[点击签名进行修改]</text>
</view>
<view class="video_ai_survey">
<sign bind:returnData="sign" imageUrl="{{signData.signetPath?(imgBaseUrl+signData.signetPath):''}}" canvasId="canvas" class="myCanvas"></sign>
</view>
</view>
<view class="problem_submit_to">
<view class="problem_submit_to_btn problem_submit_to_save" bindtap="submitSign">保 存 签 名</view>
</view>
</view>
</view>

View File

@ -0,0 +1,251 @@
/* pages/xiangmugaikuang/index.wxss */
.information-review-tab {
display: flex;
justify-content: space-around;
align-items: center;
height: 80rpx;
color: #92a1ca;
}
.information-review-tab .active {
color: #87e3fa;
padding-left: 40rpx;
background: url("https://szgcwx.jhncidg.com/staticFiles/icon/utilization.png") no-repeat left/35rpx;
}
/* 有赞原码修改 */
.van-collapse.van-hairline--top-bottom:after {
border-width: 0px 0;
}
.van-cell.van-cell--borderless {
background-color: #2b345b;
color: #fff;
margin-top: 30rpx;
border-radius: 5rpx;
}
.van-cell.van-cell--borderless:active {
background-color: #2b345b;
}
.van-collapse-item__title.van-collapse-item__title--expanded:active {
background-color: #2b345b;
}
.van-collapse-item .van-cell:after {
border-bottom: 0;
}
.van-collapse-item.van-hairline--top:after {
border-top-width: 0
}
.van-cell.van-cell--clickable {
background-color: #2b345b;
margin-top: 10rpx;
color: #fff;
border-radius: 15rpx;
}
.van-cell.van-cell--clickable:active {
background-color: #2b345b;
}
.van-collapse-item__wrapper .van-collapse-item__content {
background-color: #1e2336;
color: #8ca4ec;
border-width: 0px 0;
}
/* 页面样式 */
.gk_open {
padding: 0 30rpx;
}
.gk_open_con view {
padding: 10rpx 0;
}
.gk_open_con image {
width: 30rpx;
height: 30rpx;
margin-right: 5rpx;
position: relative;
top: 5rpx;
}
.echarts_max {
margin-top: 30rpx;
padding: 0 30rpx;
}
.echarts_min {
background: #1e2336;
font-size: 28rpx;
padding: 15rpx;
border-radius: 15rpx;
}
.eharts_title {
height: 40rpx;
line-height: 40rpx;
padding-left: 40rpx;
background: url("https://szgcwx.jhncidg.com/staticFiles/img/menu/CORE_52887EE6A33042408E11C2174974ABA1.png") no-repeat left/35rpx;
}
.eharts_head {
text-align: center;
padding: 30rpx 0;
}
.eharts_head text {
color: #0ad7ec;
font-size: 40rpx;
}
.eharts_con {
height: 320rpx;
width: auto;
}
.eharts_title_float {
float: right;
}
.eharts_title_float text {
padding: 0 5rpx;
}
.eharts_con_top {
margin-top: -320rpx;
}
.eharts_title_float_img {
width: 40rpx;
height: 40rpx;
float: right;
position: relative;
top: 2rpx;
}
.zdzb_bg {
height: 88rpx;
border-radius: 15rpx;
background: #2b345b;
margin: 30rpx;
font-size: 28rpx;
line-height: 88rpx;
padding-left: 30rpx;
}
.construction_unit {
padding: 10rpx 0;
display: flex;
}
.construction_unit_image {
padding-top: 15rpx;
}
.construction_unit_image image {
width: 80rpx;
height: 80rpx;
}
.construction_unit_list {
width: calc(100% - 100rpx);
padding-left: 20rpx;
}
.construction_unit_title {
padding: 6rpx 0;
color: #c5d9fc;
}
.construction_unit_name {
padding: 6rpx 0;
color: #54acf6;
}
.construction_unit_phone {
padding: 6rpx 0;
color: #ce9433;
}
.official {
margin-left: 30rpx;
margin-right: 30rpx;
}
.survey_content {
display: flex;
align-items: center;
justify-content: center;
margin-top: 15px;
}
.survey_content_img {
width: 90px;
height: 90px;
text-align: center;
line-height: 90px;
position: relative;
background: url("https://szgcwx.jhncidg.com/staticFiles/icon/survey_total_icon.png") no-repeat bottom/90px 60px;
}
.survey_content_img image {
text-align: center;
line-height: 90px;
width: 50px;
height: 50px;
}
.labour-survey_content_number {
color: #cbdaff;
font-size: 16px;
text-align: center;
padding-top: 25px;
padding-left: 0;
}
.survey_content_number {
padding-left: 15px;
color: #cbdaff;
font-size: 16px;
}
.labour-survey_content_number {
color: #cbdaff;
font-size: 16px;
text-align: center;
padding-top: 25px;
padding-left: 0;
}
.survey_content_value text {
font-size: 25px;
font-style: italic;
font-weight: bold;
color: #87e3fa;
padding-right: 5px;
}
.inspect_max_scroll {
height: 30vh;
max-height: 82vh;
}
.zz{
color: #fcbc02;
font-weight: 800;
}
.qrcode{
text-align: center;
}
.qrtext{
margin-top: 25rpx;
}
.qrcode image{
width: 100px;
height: 100px;
}

View File

@ -1,114 +0,0 @@
import {
loginOut,
updatePwd,
} from '../../api/login'
import {
removeToken
} from '../../utils/auth'
const app = getApp()
Page({
/**
* 页面的初始数据
*/
data: {
loginName: null,
oldPsw: '',
newPsw: '',
password: '',
showOldPass: true,
showNewPass: true,
showPassWord: true
},
seeTap1: function () {
let that = this;
this.setData({
// 切换图标
showOldPass: !that.data.showOldPass
})
},
seeTap2: function () {
let that = this;
this.setData({
// 切换图标
showNewPass: !that.data.showNewPass
})
},
seeTap3: function () {
let that = this;
this.setData({
// 切换图标
showPassWord: !that.data.showPassWord
})
if (this.data.newPsw != '' && this.data.newPsw != this.data.password) {
app.toast("两次密码输入不一致!");
}
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
/**
* 添加预警信息
*/
submit: function () {
var that = this;
if (that.data.oldPsw == '') {
app.toast("请输入旧密码!");
return;
}
if (that.data.password == '') {
app.toast("请确认新密码!");
return;
}
if (that.data.newPsw != '' && that.data.newPsw != that.data.password) {
app.toast("两次密码输入不一致!");
return;
}
if (that.data.oldPsw.length < 6) {
app.toast("请输入旧密码长度 [6-20]位字符!");
return;
}
if (that.data.newPsw.length < 6) {
app.toast("请输入新密码长度 [6-20]位字符!");
return;
}
if (that.data.password.length < 6) {
app.toast("请输入确认密码长度 [6-20]位字符!");
return;
}
let formData = {
oldPsw: that.data.oldPsw,
newPsw: that.data.newPsw,
cfmPsw: that.data.password
}
updatePwd(formData).then(res => {
if (res.data == "200") {
loginOut().then(response => {
app.toast("密码修改成功,请重新登录!", 'success');
removeToken();
wx.redirectTo({
url: '../login/login',
});
});
}
});
},
//返回到项目概况页面
goGCLB: function () {
wx.redirectTo({
url: '../index/index'
})
},
//修改密码
QRXG: function () {
this.submit();
}
})

View File

@ -1,7 +0,0 @@
{
"usingComponents": {
"van-row": "@vant/weapp/row",
"van-col": "@vant/weapp/col"
},
"navigationStyle":"custom"
}

View File

@ -1,53 +0,0 @@
<view class="header_title">
<view class="header_title_row">
<van-row>
<van-col span="4">
<view class="header_img" bindtap="goGCLB">
<image src="/images/left.png"></image>
<text class="header_fh">返回</text>
</view>
</van-col>
<van-col span="16">
<view class="header_name">修改密码</view>
</van-col>
</van-row>
</view>
</view>
<view class="max_content">
<view class="inspect_info">
<view class="inspect_info_list">
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">旧密码</view>
<view class="inspect_info_content">
<input placeholder="请输入旧密码" placeholder-style="color:#6777aa;" password="{{showOldPass}}" maxlength="20" class="inspect_input_fill_in" model:value="{{oldPsw}}" />
<image wx:if="{{showOldPass}}" class="password-icon" src="../../images/biyan.png" bindtap="seeTap1"></image>
<image wx:else class="password-icon" src="../../images/yj_01.png" bindtap="seeTap1"></image>
</view>
</view>
<view class="inspect_info_list">
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">新密码</view>
<view class="inspect_info_content">
<input placeholder="请输入新密码" placeholder-style="color:#6777aa;" password="{{showNewPass}}" maxlength="20" class="inspect_input_fill_in" model:value="{{newPsw}}" />
<image class="password-icon" src="../../images/biyan.png" bindtap="seeTap2" wx:if="{{showNewPass}}" />
<image class="password-icon" src="../../images/yj_01.png" bindtap="seeTap2" wx:else />
</view>
</view>
<view class="inspect_info_list">
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">确认密码</view>
<view class="inspect_info_content">
<input placeholder="请确认新密码" placeholder-style="color:#6777aa;" password="{{showPassWord}}" maxlength="20" class="inspect_input_fill_in" model:value="{{password}}" />
<image class="password-icon" src="../../images/biyan.png" bindtap="seeTap3" wx:if="{{showPassWord}}" />
<image class="password-icon" src="../../images/yj_01.png" bindtap="seeTap3" wx:else />
</view>
</view>
<view class="left_manage_min">
<view class="left_manage" bindtap="QRXG">
<view class="left_password">
确认修改
</view>
</view>
</view>
</view>
</view>

View File

@ -1,7 +0,0 @@
.password-icon{
width: 40rpx;
height: 40rpx;
position: absolute;
right: 60rpx;
margin-top: -66rpx;
}