提交代码

dev_xd
姜玉琦 2025-07-28 09:52:09 +08:00
parent d54b63a42f
commit 5088b37af0
27 changed files with 681 additions and 25 deletions

View File

@ -25,10 +25,18 @@ public class ProProjectChecked extends BaseEntity
@Excel(name = "公司主键")
private Long comId;
/** 公司名称 */
@Excel(name = "公司名称")
private String comName;
/** 项目主键 */
@Excel(name = "项目主键")
private Long projectId;
/** 项目名称 */
@Excel(name = "项目名称")
private String projectName;
/** 验收类型 */
@Excel(name = "验收类型")
private String checkType;
@ -124,7 +132,16 @@ public class ProProjectChecked extends BaseEntity
{
return comId;
}
public void setProjectId(Long projectId)
public String getComName() {
return comName;
}
public void setComName(String comName) {
this.comName = comName;
}
public void setProjectId(Long projectId)
{
this.projectId = projectId;
}
@ -133,7 +150,16 @@ public class ProProjectChecked extends BaseEntity
{
return projectId;
}
public void setCheckType(String checkType)
public String getProjectName() {
return projectName;
}
public void setProjectName(String projectName) {
this.projectName = projectName;
}
public void setCheckType(String checkType)
{
this.checkType = checkType;
}

View File

@ -1,6 +1,8 @@
package com.yanzhu.manage.mapper;
import java.util.List;
import java.util.Map;
import com.yanzhu.manage.domain.ProProjectChecked;
/**
@ -27,6 +29,14 @@ public interface ProProjectCheckedMapper
*/
public List<ProProjectChecked> selectProProjectCheckedList(ProProjectChecked proProjectChecked);
/**
*
*
* @param proProjectChecked
* @return
*/
public List<Map<String,Object>> selectProProjectCheckedListCount(ProProjectChecked proProjectChecked);
/**
*
*

View File

@ -7,7 +7,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<resultMap type="ProProjectChecked" id="ProProjectCheckedResult">
<result property="id" column="id" />
<result property="comId" column="com_id" />
<result property="comName" column="com_name" />
<result property="projectId" column="project_id" />
<result property="projectName" column="project_name" />
<result property="checkType" column="check_type" />
<result property="mainImage" column="main_image" />
<result property="imageUrls" column="image_urls" />
@ -34,30 +36,63 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<sql id="selectProProjectCheckedVo">
select id, com_id, project_id, check_type, main_image, image_urls, working_position, working_position_type, checking_num, check_result, intro, technician_user, technician_user_name, supervise_user, supervise_user_name, group_dept_user, group_dept_user_name, checking_date, checking_files, is_del, approve_status, create_by, create_time, update_by, update_time, remark from pro_project_checked
select ppc.id, ppc.com_id, sd.dept_name as com_name, ppc.project_id, pi.project_name, ppc.check_type, ppc.main_image, ppc.image_urls, ppc.working_position, ppc.working_position_type, ppc.checking_num, ppc.check_result, ppc.intro, ppc.technician_user, ppc.technician_user_name, ppc.supervise_user, ppc.supervise_user_name, ppc.group_dept_user, ppc.group_dept_user_name, ppc.checking_date, ppc.checking_files, ppc.is_del, ppc.approve_status, ppc.create_by, ppc.create_time, ppc.update_by, ppc.update_time, ppc.remark
from pro_project_checked ppc
left join pro_project_info pi on pi.id = ppc.project_id
left join sys_dept sd on sd.dept_id = ppc.com_id
</sql>
<select id="selectProProjectCheckedList" parameterType="ProProjectChecked" resultMap="ProProjectCheckedResult">
<include refid="selectProProjectCheckedVo"/>
<where>
<if test="comId != null "> and com_id = #{comId}</if>
<if test="projectId != null "> and project_id = #{projectId}</if>
<if test="checkType != null and checkType != ''"> and check_type = #{checkType}</if>
<if test="workingPosition != null and workingPosition != ''"> and working_position = #{workingPosition}</if>
<if test="workingPositionType != null and workingPositionType != ''"> and working_position_type = #{workingPositionType}</if>
<if test="checkResult != null and checkResult != ''"> and check_result = #{checkResult}</if>
<if test="technicianUser != null and technicianUser != ''"> and technician_user = #{technicianUser}</if>
<if test="superviseUser != null and superviseUser != ''"> and supervise_user = #{superviseUser}</if>
<if test="groupDeptUser != null and groupDeptUser != ''"> and group_dept_user = #{groupDeptUser}</if>
<if test="checkingDate != null "> and checking_date = #{checkingDate}</if>
<if test="isDel != null "> and is_del = #{isDel}</if>
<if test="approveStatus != null and approveStatus != ''"> and approve_status = #{approveStatus}</if>
<where>
<if test="comId != null "> and ppc.com_id = #{comId}</if>
<if test="projectId != null "> and ppc.project_id = #{projectId}</if>
<if test="activeComId != null "> and ppc.com_id = #{activeComId}</if>
<if test="activeProjectId != null "> and ppc.project_id = #{activeProjectId}</if>
<if test="projectName != null and projectName != ''"> and pi.project_name like concat('%', #{projectName}, '%')</if>
<if test="checkType != null and checkType != ''"> and ppc.check_type = #{checkType}</if>
<if test="workingPosition != null and workingPosition != ''"> and ppc.working_position = #{workingPosition}</if>
<if test="workingPositionType != null and workingPositionType != ''"> and ppc.working_position_type = #{workingPositionType}</if>
<if test="checkResult != null and checkResult != ''"> and ppc.check_result = #{checkResult}</if>
<if test="technicianUser != null and technicianUser != ''"> and ppc.technician_user = #{technicianUser}</if>
<if test="superviseUser != null and superviseUser != ''"> and ppc.supervise_user = #{superviseUser}</if>
<if test="groupDeptUser != null and groupDeptUser != ''"> and ppc.group_dept_user = #{groupDeptUser}</if>
<if test="checkingDate != null "> and ppc.checking_date = #{checkingDate}</if>
<if test="isDel != null "> and ppc.is_del = #{isDel}</if>
<if test="approveStatus != null and approveStatus != ''"> and ppc.approve_status = #{approveStatus}</if>
<if test="activeTags != null">
<if test='activeTags == "jxz"'> and (ppc.approve_status != '100' or ppc.check_result is null or ppc.check_result != '1')</if>
<if test='activeTags == "jwc"'> and ppc.approve_status = '100' and ppc.check_result = '1'</if>
</if>
and ppc.is_del = '0'
</where>
order by ppc.id
</select>
<select id="selectProProjectCheckedListCount" parameterType="ProProjectChecked" resultType="map">
select ppc.approve_status, ppc.check_result, count(1) as total from pro_project_checked ppc
<where>
<if test="comId != null "> and ppc.com_id = #{comId}</if>
<if test="projectId != null "> and ppc.project_id = #{projectId}</if>
<if test="activeComId != null "> and ppc.com_id = #{activeComId}</if>
<if test="activeProjectId != null "> and ppc.project_id = #{activeProjectId}</if>
<if test="projectName != null and projectName != ''"> and pi.project_name like concat('%', #{projectName}, '%')</if>
<if test="checkType != null and checkType != ''"> and ppc.check_type = #{checkType}</if>
<if test="workingPosition != null and workingPosition != ''"> and ppc.working_position = #{workingPosition}</if>
<if test="workingPositionType != null and workingPositionType != ''"> and ppc.working_position_type = #{workingPositionType}</if>
<if test="technicianUser != null and technicianUser != ''"> and ppc.technician_user = #{technicianUser}</if>
<if test="superviseUser != null and superviseUser != ''"> and ppc.supervise_user = #{superviseUser}</if>
<if test="groupDeptUser != null and groupDeptUser != ''"> and ppc.group_dept_user = #{groupDeptUser}</if>
<if test="checkingDate != null "> and ppc.checking_date = #{checkingDate}</if>
<if test="isDel != null "> and ppc.is_del = #{isDel}</if>
and ppc.is_del = '0'
</where>
group by ppc.approve_status, ppc.check_result
</select>
<select id="selectProProjectCheckedById" parameterType="Long" resultMap="ProProjectCheckedResult">
<include refid="selectProProjectCheckedVo"/>
where id = #{id}
where ppc.id = #{id}
</select>
<insert id="insertProProjectChecked" parameterType="ProProjectChecked" useGeneratedKeys="true" keyProperty="id">

View File

@ -24,8 +24,10 @@ import java.util.List;
@RestController
@RequestMapping("/expression")
public class SysExpressionController extends BaseController {
@Autowired
private ISysExpressionService sysExpressionService;
private Long id;
/**

View File

@ -15,6 +15,7 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
* Controller
@ -102,4 +103,19 @@ public class ProProjectCheckedController extends BaseController
{
return toAjax(proProjectCheckedService.deleteProProjectCheckedByIds(ids));
}
/**
*
*/
@RequiresPermissions("manage:projectChecked:list")
@GetMapping("/listCount")
public AjaxResult listCount(ProProjectChecked proProjectChecked)
{
startPage();
if(proProjectChecked.getProjectId()==null){
proProjectChecked.setProjectId(SecurityUtils.getLoginUser().getSysUser().getActiveProjectId());
}
List<Map<String,Object>> list = proProjectCheckedService.selectProProjectCheckedListCount(proProjectChecked);
return success(list);
}
}

View File

@ -1,6 +1,8 @@
package com.yanzhu.manage.service;
import java.util.List;
import java.util.Map;
import com.yanzhu.manage.domain.ProProjectChecked;
/**
@ -27,6 +29,14 @@ public interface IProProjectCheckedService
*/
public List<ProProjectChecked> selectProProjectCheckedList(ProProjectChecked proProjectChecked);
/**
*
*
* @param proProjectChecked
* @return
*/
public List<Map<String,Object>> selectProProjectCheckedListCount(ProProjectChecked proProjectChecked);
/**
*
*

View File

@ -16,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
* Service
@ -59,6 +60,17 @@ public class ProProjectCheckedServiceImpl implements IProProjectCheckedService
return proProjectCheckedMapper.selectProProjectCheckedList(proProjectChecked);
}
/**
*
*
* @param proProjectChecked
* @return
*/
@Override
public List<Map<String,Object>> selectProProjectCheckedListCount(ProProjectChecked proProjectChecked){
return proProjectCheckedMapper.selectProProjectCheckedListCount(proProjectChecked);
}
/**
*
*

View File

@ -337,4 +337,24 @@ export function getYsToken(id){
url: '/manage/videoMonitor/getYsToken/' + id,
method: 'get'
})
}
}
// 举牌验收管理
export function projectCheckedList(query) {
return request({
url: '/manage/projectChecked/list',
method: 'get',
params: query
})
}
// 举牌验收管理
export function projectCheckedListCount(query) {
return request({
url: '/manage/projectChecked/listCount',
method: 'get',
params: query
})
}

View File

@ -40,7 +40,11 @@
"project_magusers/info/index",
"project_schedule/list/index",
"project_schedule/add/index",
"project_schedule/info/index"
"project_schedule/info/index",
"project_checked/list/index",
"project_checked/add/index",
"project_checked/info/index",
"project_checked/handle/index"
],
"independent": false
}

View File

@ -0,0 +1,66 @@
// pageage/project_checked/add/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 @@
<!--pageage/project_checked/add/index.wxml-->
<text>pageage/project_checked/add/index.wxml</text>

View File

@ -0,0 +1 @@
/* pageage/project_checked/add/index.wxss */

View File

@ -0,0 +1,66 @@
// pageage/project_checked/handle/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 @@
<!--pageage/project_checked/handle/index.wxml-->
<text>pageage/project_checked/handle/index.wxml</text>

View File

@ -0,0 +1 @@
/* pageage/project_checked/handle/index.wxss */

View File

@ -0,0 +1,66 @@
// pageage/project_checked/info/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 @@
<!--pageage/project_checked/info/index.wxml-->
<text>pageage/project_checked/info/index.wxml</text>

View File

@ -0,0 +1 @@
/* pageage/project_checked/info/index.wxss */

View File

@ -0,0 +1,233 @@
import config from '../../../config'
import {
getToken,
getUserInfo
} from '../../../utils/auth'
import {
projectCheckedList,
projectCheckedListCount
} from '../../../api/project'
const app = getApp()
Page({
/**
* 页面的初始数据
*/
data: {
addFlag: false,
projectId: "",
projectName: "",
initData: {},
pageNum: 1,
pageSize: 10,
total: 0,
listData: [],
activeState: "jxz",
qbCount: 0,
jxzCount: 0,
ywcCount: 0,
imgBaseUrl: config.baseImgUrl,
projectUserInfo: {}
},
//项目切换 返回值
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()) {
wx.redirectTo({
url: '../../../pages/login/login',
})
}
const proUserInfo = getUserInfo();
this.setData({
addFlag: proUserInfo.projectUserInfo.subDeptType == "1",
projectUserInfo: proUserInfo.projectUserInfo,
projectId: app.globalData.useProjectId,
projectName: app.globalData.useProjectName,
initData: {
id: app.globalData.useProjectId,
text: app.globalData.useProjectName,
},
pageNum: 1,
pageSize: 10,
listData: [],
total: 0
});
this.getListData(this.data.activeState);
},
/**
* 添加验收信息
*/
skipAdd() {
wx.redirectTo({
url: `../add/index`,
})
},
getInfo(e) {
let {
id,
checkState,
lordSent,
recheckSend
} = e.currentTarget.dataset.set
if ((checkState == 0 || checkState == 3) && lordSent == this.data.projectUserInfo.userId) {
//整改页面(状态时待整改&&整改人是当前登录人)
wx.redirectTo({
url: `../modify/index?type=${this.data.type}&id=${id}`,
})
} else if (checkState == 1 && recheckSend == this.data.projectUserInfo.userId) {
//复检页面 (状态时待复检&&复检人是当前登录人)
wx.redirectTo({
url: `../check/index?type=${this.data.type}&id=${id}`,
})
} else {
wx.redirectTo({
url: `../info/index?type=${this.data.type}&id=${id}`,
})
}
},
/**
* 查询项目举牌验收数据
*/
getListData(activeState) {
let params = "pageNum=" + this.data.pageNum + "&pageSize=" + this.data.pageSize + "&projectId=" + app.globalData.useProjectId + "activeTags=" + activeState;
projectCheckedList(params).then(res => {
if (res.code == 200) {
this.setData({
total: res.total,
listData: this.data.listData.concat(res.rows)
})
}
});
// 统计列表
projectCheckedListCount(params).then(res => {
if (res.code == 200) {
let _qb=0,_jxz=0,_ywc=0;
res.data.forEach(item =>{
if(item.approve_status=='100' && item.check_result=='1'){
_qb += item.total;
_ywc += item.total;
}else{
_qb += item.total;
_jxz += item.total;
}
});
this.setData({
qbCount: _qb,
jxzCount: _jxz,
ywcCount: _ywc,
})
}
});
},
/**
* 标签切换
*/
trainJump(e) {
let index = e.currentTarget.dataset.index;
let nav = "";
if (index == 1) {
nav = 'qb';
}
if (index == 2) {
nav = 'jxz';
} else if (index == 3) {
nav = 'ywc';
}
this.setData({
activeState: nav,
pageNum: 1,
pageSize: 10,
listData: [],
});
this.getListData(nav);
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
returnToPage: function () {
/*关闭当前页面,跳转到其它页面。*/
if (wx.getStorageSync('nav-menu') == "xmgl") {
wx.redirectTo({
url: '../../project_more/index',
})
} else {
wx.redirectTo({
url: '../../project_quality/index',
})
}
},
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(this.data.activeState);
} else {
console.log("已经到底了,没有数据可加载!!!");
}
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})

View File

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

View File

@ -0,0 +1,69 @@
<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 wx:if="{{projectUserInfo.subDeptType=='1'}}" class="modify_video_nav" style="margin-top: 5rpx;">
<view class="{{activeState=='qb'?'active':''}}" bindtap="trainJump" data-index="1"><text>全部({{qbCount}}</text></view>
<view class="{{activeState=='jxz'?'active':''}}" bindtap="trainJump" data-index="2"><text>进行中({{jxzCount}}</text></view>
<view class="{{activeState=='ywc'?'active':''}}" bindtap="trainJump" data-index="3"><text>已完成({{ywcCount}}</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="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 < 10 ?'0'+(index+1):(index+1)}}</view>
<view class="module_title module_title_flex inspect_list_title_text_2">
{{item.createTime}}
</view>
<text class="timeline_for_state_1">常规验收</text>
</view>
</view>
<view class="inspect_list_info">
<view class="inspect_list_info_details">
<view class="inspect_list_info_img">
<view wx:if="{{item.approveStatus==1}}" class="code_label code_label_yellow">待审批</view>
<view wx:if="{{item.approveStatus==3}}" class="code_label code_label_red">已驳回</view>
<view wx:if="{{item.approveStatus==4}}" class="code_label code_label_green">已完成</view>
<van-image width="120rpx" height="120rpx" fit="cover" src="{{imgBaseUrl+item.mainImage+'.min.jpg'}}" />
</view>
<view class="inspect_list_info_data">
<view class="inspect_list_info_data_prop color_blue">工序部位:<text>{{item.workingPosition}}</text></view>
<view class="inspect_list_info_data_prop">技术专员:<text>{{item.technicianUserName}}</text></view>
<view class="inspect_list_info_data_prop">监理专员:<text>{{item.superviseUserName}}</text></view>
<view class="inspect_list_info_data_prop">验收时间:<text>{{item.recheckSendUser}}</text></view>
</view>
</view>
<view class="inspect_list_info_position">
验收描述:<text class="color_purple">{{item.intro}}</text>
</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 wx:if="{{addFlag}}" class="inspect_add_to" bindtap="skipAdd">
<view style="padding-top: 22rpx;">
<image src="/images/new_add.png"></image>
<view>新增</view>
</view>
</view>
</view>
</scroll-view>

View File

@ -0,0 +1 @@
/* pageage/project_checked/list/index.wxss */

View File

@ -1,7 +1,4 @@
{
"usingComponents": {
"van-overlay": "@vant/weapp/overlay/index" ,
"van-popup": "@vant/weapp/popup/index"
},
"usingComponents": {},
"navigationStyle":"custom"
}

View File

@ -39,7 +39,8 @@ export default defineConfig(({ mode, command }) => {
},
// https://cn.vitejs.dev/config/#server-proxy
"/dev-api": {
target: "http://localhost:8080",
//target: "http://localhost:8080",
target: "http://62.234.3.186",
changeOrigin: true,
rewrite: (p) => p.replace(/^\/dev-api/, ""),
},