项目举牌验收功能开发

dev_xd
lj7788@126.com 2025-07-28 18:26:23 +08:00
parent 5eba348c3d
commit 1073c8a188
13 changed files with 251 additions and 200 deletions

View File

@ -1,5 +1,7 @@
package com.yanzhu.common.core.enums;
import com.yanzhu.common.core.utils.StringUtils;
/**
*
*/
@ -16,6 +18,7 @@ public enum UserTypeEnums {
FBCLRY("76", "分包材料人员","fbclry"),
FBAQRY("75", "分包安全人员","fbaqry"),
JSDWRY("66", "总包单位管理","jsdw"),
ZBJSYRY("67", "总包技术人员","zbjsy"),
JLDWRY("81", "监理单位人员","jldw"),
SGDWRY("82", "施工单位人员","sgdw"),
CLFBRY("83", "材料分包人员","clfb"),
@ -51,4 +54,15 @@ public enum UserTypeEnums {
return keys;
}
public static UserTypeEnums getByCode(String code){
if(StringUtils.isBlank(code)){
return QTRY;
}
for (UserTypeEnums value : UserTypeEnums.values()) {
if(value.getCode().equals(code)){
return value;
}
}
return QTRY;
}
}

View File

@ -155,6 +155,16 @@ public class ProProjectInfoSubdeptsUsers extends BaseEntity
@Excel(name = "进场状态")
private String useStatus;
private String sysRoles;
public String getSysRoles() {
return sysRoles;
}
public void setSysRoles(String sysRoles) {
this.sysRoles = sysRoles;
}
/** 进场状态 */
@Excel(name = "进场唯一代码")
private String admitGuid;

View File

@ -53,6 +53,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="updateTime" column="update_time" />
<result property="remark" column="remark" />
<result property="source" column="source" />
<result property="sysRoles" column="sys_roles"/>
</resultMap>
<sql id="selectProProjectInfoSubdeptsUsersVo">
@ -71,7 +72,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</sql>
<select id="selectProProjectInfoSubdeptsUsersList" parameterType="ProProjectInfoSubdeptsUsers" resultMap="ProProjectInfoSubdeptsUsersResult">
<include refid="selectProProjectInfoSubdeptsUsersVo"/>
select psu.id, psu.par_id, psu.com_id, psu.project_id, pi.project_name, psu.sub_dept_id, psu.sub_dept_type, dic3.dict_label as sub_dept_type_name, ifNull(pdept.sub_dept_name,'项目总包单位') as sub_dept_name, psu.sub_dept_power_path, psu.user_id, psu.user_post, psu.sub_dept_group,
psu.sub_dept_group_name, psu.user_name, psu.card_type, psu.card_code, psu.user_sex, psu.user_picture, psu.user_phone, psu.degree_grade, dic4.dict_label as degree_grade_name, psu.user_infos, psu.craft_type, dic1.dict_label as craft_type_name, psu.craft_post, dic2.dict_label as craft_post_name, psu.edu_status, psu.edu_file_path, psu.edu_date, psu.approve_status,
psu.use_date, psu.use_status, psu.admit_guid, psu.qr_code, psu.sub_step, psu.illness_status, psu.sup_illness_status, psu.is_del, psu.create_by, psu.create_time, psu.update_by, psu.update_time,
psu.remark, psu.source, psu.face_guid,sd.dept_name com_name,psu.work_type,GROUP_CONCAT(DISTINCT role.role_key) AS sys_roles
from pro_project_info_subdepts_users psu
left join pro_project_info pi on pi.id = psu.project_id
left join pro_project_info_subdepts pdept on psu.sub_dept_id=pdept.id
left join sys_dept sd on sd.dept_id = psu.com_id
left join sys_dict_data dic1 on psu.`craft_type`=dic1.`dict_value` and dic1.`dict_type`='pro_craft_type'
left join sys_dict_data dic2 on psu.`craft_post`=dic2.`dict_value` and dic2.`dict_type`='pro_craft_post'
left join sys_dict_data dic3 on psu.`sub_dept_type`=dic3.`dict_value` and dic3.`dict_type`='sub_dept_type'
left join sys_dict_data dic4 on psu.`degree_grade`=dic4.`dict_value` and dic4.`dict_type`='educational_type'
LEFT JOIN sys_user_role ur ON psu.user_id = ur.user_id
LEFT JOIN sys_role role ON ur.role_id = role.role_id
<where>
<if test="comId != null "> and psu.com_id = #{comId}</if>
<if test="parId != null "> and psu.par_id = #{parId}</if>
@ -104,6 +118,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="params.beginTime != null and params.beginTime != '' and params.endTime != null and params.endTime != ''"> and date(psu.use_date) between #{params.beginTime} and #{params.endTime}</if>
and psu.is_del != 2
</where>
GROUP BY psu.id
order by psu.id desc
</select>

View File

@ -234,8 +234,8 @@ public class ProProjectInfoServiceImpl implements IProProjectInfoService
this.insertProRole(UserTypeEnums.KTDWRY.getKeys(),UserTypeEnums.KTDWRY.getInfo(),proProjectInfo.getId(),myMenuConfigRoleList);
this.insertProRole(UserTypeEnums.SJDWRY.getKeys(),UserTypeEnums.SJDWRY.getInfo(),proProjectInfo.getId(),myMenuConfigRoleList);
this.insertProRole(UserTypeEnums.OTHERS.getKeys(),UserTypeEnums.OTHERS.getInfo(),proProjectInfo.getId(),myMenuConfigRoleList);
this.insertProRole(UserTypeEnums.ZBJSYRY.getKeys(),UserTypeEnums.ZBJSYRY.getInfo(),proProjectInfo.getId(),myMenuConfigRoleList);
loadingProjectsCache();
return res;
}else{
throw new ServiceException("项目信息保存失败!!!");

View File

@ -527,7 +527,7 @@ public class SysUserServiceImpl implements ISysUserService
if(Objects.nonNull(sysUser)){
user.setUserId(sysUser.getUserId());
sysUser.setUserName(user.getUserName());
sysUser.setUserType(UserTypeEnums.QTRY.getCode());
sysUser.setUserType(UserTypeEnums.getByCode(userType).getCode());
sysUser.setPhonenumber(user.getUserName());
sysUser.setNickName(user.getNickName());
sysUser.setUpdateBy(user.getUpdateBy());
@ -535,7 +535,7 @@ public class SysUserServiceImpl implements ISysUserService
sysUser.setPassword(user.getPassword());
userMapper.updateUser(sysUser);
}else{
user.setUserType(UserTypeEnums.QTRY.getCode());
user.setUserType(UserTypeEnums.getByCode(userType).getCode());
user.setCreateBy(user.getUpdateBy());
user.setCreateTime(user.getUpdateTime());
user.setWorkType(user.getWorkType());
@ -571,7 +571,7 @@ public class SysUserServiceImpl implements ISysUserService
SysUserExt where=new SysUserExt();
where.setUserId(user.getUserId());
where.setComId(user.getComId());
where.setUserType(UserTypeEnums.QTRY.getCode());
where.setUserType(user.getUserType());
List<SysUserExt> userExts=userExtService.selectSysUserExtList(where);
if(userExts.size()==0){
where.setIsActive(1l);

View File

@ -23,8 +23,10 @@
<link rel="stylesheet" href="/cesium/Widgets/widgets.css" />
<!-- <script src="/cesium/jquery-3.0.0.min.js"></script> -->
<script src="/cesium/Cesium.js?v=20230913"></script>
<script src="/cesium/BIMGISEngine-min.js?v=20230920"></script>
<!-- <script src="/cesium/Cesium.js?v=20230913"></script>
<script src="/cesium/BIMGISEngine-min.js?v=20230920"></script> -->
<script src="/cdn/Cesium/Cesium.js"></script>
<script src="/cdn/Cesium/BIMGISEngine.js"></script>
<script src="/cesium/initApi.js?v=20230920"></script>
<!--[if lt IE 11

View File

@ -185,6 +185,9 @@ export default {
},
addModel(modelId, cb) {
let url = `${window.config.modelUrl}/Tools/output/model/${modelId}/root.glt`;
if (this.me.bimCfg.clientApi) {
url = `/bimdata/Tools/output/model/${modelId}/root.glt`;
}
console.log("加载模型:" + url);
api.Model.add(
url,
@ -202,10 +205,14 @@ export default {
let z = cfg?.z || 0;
let rotateZ = cfg?.rotateZ || 0;
if (x * 1 + y * 1 + z * 1 != 0) {
api.Model.moveToPosition([x, y, z], 0, modelId)
api.Model.moveToPosition([x, y, 0], 0, modelId)
}
if (rotateZ * 1 != 0) {
api.Model.rotate(0, 0, rotateZ, modelId)
if(this.me.bimCfg.clientApi){
}else{
api.Model.rotate(0, 0, rotateZ, modelId)
}
}
if (cfg && cfg.hideParts) {
cfg.hideParts.forEach(it => {
@ -218,7 +225,16 @@ export default {
setTimeout(() => {
api.Model.location(modelId);
if (this.$parent.viewPoint) {
api.Camera.setViewPort(this.$parent.viewPoint);
if (this.me.bimCfg.clientApi) {
if (this.$parent.viewPoint["world"]) {
}
} else {
if (this.$parent.viewPoint["world"]) {
api.Camera.setViewPort(this.$parent.viewPoint);
}
}
} else {
api.Camera.getViewPort((p) => {
this.$emit("modelAdd", p);
@ -227,13 +243,12 @@ export default {
let hideCnt = 0;
let hideFn = () => {
hideCnt++;
if(hideCnt>30){
if (hideCnt > 30) {
return;
}
setTimeout(() => {
let featureIds = (this.me.hideParts || []).map(it => it.featureId);
if (featureIds.length > 0) {
console.log(featureIds.join("#"))
api.Feature.setVisible(featureIds.join("#"), false);
}
hideFn();

View File

@ -24,6 +24,15 @@
</div>
<div class="nav-title">旋转</div>
<el-form-item label="绕X轴">
<el-slider v-model="form.rotateX" :min="-180" :max="180"></el-slider>
<el-input-number v-model="form.rotateX" placeholder="请输入旋转角度" :min="-180" :max="180"></el-input-number>
</el-form-item>
<el-form-item label="绕Y轴">
<el-slider v-model="form.rotateY" :min="-180" :max="180"></el-slider>
<el-input-number v-model="form.rotateY" placeholder="请输入旋转角度" :min="-180" :max="180"></el-input-number>
</el-form-item>
<el-form-item label="绕Z轴">
<el-slider v-model="form.rotateZ" :min="-180" :max="180"></el-slider>
<el-input-number v-model="form.rotateZ" placeholder="请输入旋转角度" :min="-180" :max="180"></el-input-number>
</el-form-item>
@ -55,20 +64,27 @@ export default {
},
data() {
return {
isClient:false,
modelId: null,
movePoint: null,
form: {
x: 0,
y: 0,
z: 0,
rotateZ: 0
rotateX: 0,
rotateY: 0,
rotateZ: 0,
},
saveData: {
type:'',
x: 0,
y: 0,
z: 0,
rotateZ: 0
rotateX: 0,
rotateY: 0,
rotateZ: 0,
},
movePoint: null
}
@ -76,9 +92,9 @@ export default {
methods: {
doModelMove() {
ElMessage.info("左键单击选择移动位置,右键单击结束操作!");
if(this.me.bimCfg.clientApi){
if (this.me.bimCfg.clientApi) {
APITools.moveToPosition(this);
}else{
} else {
APITools.moveToPosition(this);
}
},
@ -103,6 +119,8 @@ export default {
},
initData(modelId) {
this.modelId = modelId;
this.saveData.type=this.me.bimCfg.clientApi?'api':'sapi'
this.isClient=this.me.bimCfg.clientApi
let modelInfo = this.me.models.find(m => m.modelId == modelId);
if (modelInfo) {
let cfg = modelInfo.bimCfg;
@ -148,7 +166,12 @@ export default {
},
updateRotate() {
api.Model.rotate(0, 0, this.form.rotateZ, this.modelId)
if(this.isClient){
api.Model.ClearModelRotation(this.modelId);
api.Model.rotateForEdit(this.modelId,this.form.rotateX, this.form.rotateY, this.form.rotateZ)
}else{
api.Model.rotateForEdit(this.form.rotateX, this.form.rotateY, this.form.rotateZ, this.modelId)
}
this.saveData.rotateZ = this.form.rotateZ;
},
resetRotate() {

View File

@ -40,7 +40,9 @@ function doModelMove(that) {
if (e && e["id"]) {
let modelId = e.id.split("^")[0];
that.showMove = true;
that.modelId = modelId;
that.$refs.moveModel.initData(modelId)
api.Public.clearHandler()
} else {
ElMessage.warning("请在模型上选点!");
}
@ -48,12 +50,18 @@ function doModelMove(that) {
});
}
//在地图上移动模型
function moveToPosition(that){
api.Public.event("LEFT_CLICK",(n)=>{
api.Public.pickupCoordinate(n.position,e=>{
api.Public.convertWorldToCartographicLocation(e,m=>{
console.log(e,m)
});
function moveToPosition(that) {
api.Public.event("LEFT_CLICK", (n) => {
api.Public.pickupCoordinate(n.position, e => {
var a = [api.Public.radiansToDegrees(e[0]), api.Public.radiansToDegrees(e[1]), 0];
api.Model.moveToPosition(a, 0, that.modelId)
that.form.x = a[0];
that.form.y = a[1];
that.form.z = 0;
that.saveData.x = that.form.x;
that.saveData.y = that.form.y;
that.saveData.z = that.form.z;
// });
});
});
}

View File

@ -179,9 +179,16 @@ export default {
}
api.Camera.stopImmersiveRoam();
api.Model.location(api.m_model.keys().toArray()[0]);
api.Plugin.deleteMiniMap();
if(!this.bimCfg.clientApi){
api.Plugin.deleteMiniMap();
}
if (this.viewPoint) {
api.Camera.setViewPort(this.viewPoint);
if(this.viewPoint.world){
if(!this.bimCfg.clientApi){
api.Camera.setViewPort(this.viewPoint);
}
}
}
},
doMenu(n) {

View File

@ -64,6 +64,7 @@ function doModelMove(that) {
if (n && n["id"]) {
let modelId = n.id.split("^")[0];
that.showMove = true;
that.modelId=modelId;
that.$refs.moveModel.initData(modelId)
} else {
ElMessage.warning("请在模型上选点!");

View File

@ -3,35 +3,42 @@
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="验收结果" prop="checkResult">
<el-select v-model="queryParams.checkResult" placeholder="请选择验收结果" clearable>
<el-option
v-for="dict in project_checking_result"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
<el-option v-for="dict in project_checking_result" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="技术专员" prop="technicianUserName">
<el-input
v-model="queryParams.technicianUserName"
placeholder="请输入技术专员"
clearable
@keyup.enter="handleQuery"
/>
<el-select v-model="queryParams.technicianUserName" placeholder="请选择技术专员" clearable style="width:150px">
<el-option v-for="item in technicianUserOptions" :key="item.userPhone" :label="item.userName"
:value="item.userPhone">
<span style="float: left">{{ item.userName }}</span>
<span style="
float: right;
color: var(--el-text-color-secondary);
font-size: 13px;
">
{{ item.userPhone }}
</span>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="监理专员" prop="superviseUserName">
<el-input
v-model="queryParams.superviseUserName"
placeholder="请输入监理专员"
clearable
@keyup.enter="handleQuery"
/>
<el-select v-model="queryParams.superviseUserName" placeholder="请选择监理专员" style="width: 150px">
<el-option v-for="item in superviseUserOptions" :key="item.userPhone" :label="item.userName"
:value="item.userPhone">
<span style="float: left">{{ item.userName }}</span>
<span style="
float: right;
color: var(--el-text-color-secondary);
font-size: 13px;
">
{{ item.userPhone }}
</span>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="验收时间" prop="checkingDate">
<el-date-picker clearable
v-model="queryParams.checkingDate"
type="date"
value-format="YYYY-MM-DD"
<el-date-picker clearable v-model="queryParams.checkingDate" type="date" value-format="YYYY-MM-DD"
placeholder="请选择验收时间">
</el-date-picker>
</el-form-item>
@ -43,64 +50,34 @@
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="Plus"
@click="handleAdd"
v-hasPermi="['manage:projectChecked:add']"
>新增</el-button>
<el-button type="primary" plain icon="Plus" @click="handleAdd"
v-hasPermi="['manage:projectChecked:add']">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="Edit"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['manage:projectChecked:edit']"
>修改</el-button>
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate"
v-hasPermi="['manage:projectChecked:edit']">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="Delete"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['manage:projectChecked:remove']"
>删除</el-button>
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete"
v-hasPermi="['manage:projectChecked:remove']">删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="Download"
@click="handleExport"
v-hasPermi="['manage:projectChecked:export']"
>导出</el-button>
<el-button type="warning" plain icon="Download" @click="handleExport"
v-hasPermi="['manage:projectChecked:export']">导出</el-button>
</el-col>
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="projectCheckedList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="项目名称" align="center" prop="projectName" />
<el-table-column label="项目名称" align="center" prop="projectName" v-if="false" />
<el-table-column label="验收图片" align="center" prop="imageUrls" width="100">
<template #default="scope">
<div v-if="scope.row.imageUrls != null">
<image-preview
v-if="scope.row.imageUrls.split(',').length == 1"
:src="scope.row.imageUrls"
:width="50"
:height="50"
/>
<el-badge
v-if="scope.row.imageUrls.split(',').length > 1"
:value="scope.row.imageUrls.split(',').length"
type="primary"
class="item"
>
<image-preview v-if="scope.row.imageUrls.split(',').length == 1" :src="scope.row.imageUrls" :width="50"
:height="50" />
<el-badge v-if="scope.row.imageUrls.split(',').length > 1" :value="scope.row.imageUrls.split(',').length"
type="primary" class="item">
<image-preview :src="scope.row.imageUrls" :width="50" :height="50" />
</el-badge>
</div>
@ -109,22 +86,22 @@
</el-table-column>
<el-table-column label="工序部位" align="center" prop="workingPosition" />
<el-table-column label="验收描述" align="center" prop="intro" />
<el-table-column label="班组长" align="center" >
<el-table-column label="班组长" align="center">
<template #default="scope">
<div>{{scope.row.groupDeptUserName}}</div>
<div>{{scope.row.groupDeptUser}}</div>
<div>{{ scope.row.groupDeptUserName }}</div>
<div>{{ scope.row.groupDeptUser }}</div>
</template>
</el-table-column>
<el-table-column label="技术员" align="center" >
<el-table-column label="技术员" align="center">
<template #default="scope">
<div>{{scope.row.technicianUserName}}</div>
<div>{{scope.row.technicianUser}}</div>
<div>{{ scope.row.technicianUserName }}</div>
<div>{{ scope.row.technicianUser }}</div>
</template>
</el-table-column>
<el-table-column label="监理专员" align="center" >
<el-table-column label="监理专员" align="center">
<template #default="scope">
<div>{{scope.row.superviseUserName }}</div>
<div>{{scope.row.superviseUser}}</div>
<div>{{ scope.row.superviseUserName }}</div>
<div>{{ scope.row.superviseUser }}</div>
</template>
</el-table-column>
<el-table-column label="验收时间" align="center" prop="checkingDate" width="120">
@ -134,24 +111,16 @@
</el-table-column>
<el-table-column label="验收结果" align="center" prop="checkResult">
<template #default="scope">
<dict-tag :options="project_checking_result" :value="scope.row.checkResult"/>
<dict-tag :options="project_checking_result" :value="scope.row.checkResult" />
</template>
</el-table-column>
<el-table-column label="三方验收照" align="center" prop="checkingFiles" width="88">
<template #default="scope">
<div v-if="scope.row.checkingFiles != null">
<image-preview
v-if="scope.row.checkingFiles.split(',').length == 1"
:src="scope.row.checkingFiles"
:width="50"
:height="50"
/>
<el-badge
v-if="scope.row.checkingFiles.split(',').length > 1"
:value="scope.row.checkingFiles.split(',').length"
type="primary"
class="item"
>
<image-preview v-if="scope.row.checkingFiles.split(',').length == 1" :src="scope.row.checkingFiles"
:width="50" :height="50" />
<el-badge v-if="scope.row.checkingFiles.split(',').length > 1"
:value="scope.row.checkingFiles.split(',').length" type="primary" class="item">
<image-preview :src="scope.row.checkingFiles" :width="50" :height="50" />
</el-badge>
</div>
@ -160,24 +129,21 @@
</el-table-column>
<el-table-column label="审核状态" align="center" prop="approveStatus">
<template #default="scope">
<dict-tag :options="project_check_status" :value="scope.row.approveStatus"/>
<dict-tag :options="project_check_status" :value="scope.row.approveStatus" />
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope">
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['manage:projectChecked:edit']"></el-button>
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['manage:projectChecked:remove']"></el-button>
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)"
v-hasPermi="['manage:projectChecked:edit']">修改</el-button>
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)"
v-hasPermi="['manage:projectChecked:remove']">删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize" @pagination="getList" />
<!-- 添加或修改项目举牌验收对话框 -->
<el-dialog :title="title" v-model="open" width="680px" append-to-body>
@ -186,12 +152,15 @@
<el-tag effect="plain">{{ form.projectName }}</el-tag>
</el-form-item>
<el-form-item label="验收图片" prop="imageUrls">
<image-upload v-model="form.imageUrls" :limit="3"/>
<image-upload v-model="form.imageUrls" :limit="3" />
</el-form-item>
<el-form-item label="工序部位" prop="workingPosition">
<el-tree-select ref="selTreePlan" v-model="form.workingPosition" :data="planOptions" :props="{ value: 'id', label: 'taskName', children: 'children' }" value-key="id" placeholder="请选择工程计划名称" style="width: 100%" @change="(v) => handleChangePlan(v)">
<template #default="{ node, data }">
{{ data.taskName }}<span style="float: right; color: var(--el-text-color-secondary); font-weight: 600">{{ data.scheduleNode }} % </span>
<el-tree-select ref="selTreePlan" v-model="form.workingPosition" :data="planOptions"
:props="{ value: 'id', label: 'taskName', children: 'children' }" value-key="id" placeholder="请选择工程计划名称"
style="width: 100%" >
<template #default="{ data }">
{{ data.taskName }}<span style="float: right; color: var(--el-text-color-secondary); font-weight: 600">{{
data.scheduleNode }} % </span>
</template>
</el-tree-select>
</el-form-item>
@ -200,20 +169,14 @@
</el-form-item>
<el-form-item label="班组长" prop="groupDeptUser">
<el-select v-model="form.groupDeptUser" placeholder="请选择班组长" style="width: 100%">
<el-option
v-for="item in groupUserOptions"
:key="item.userPhone"
:label="item.userName"
:value="item.userPhone"
>
<el-option v-for="item in groupUserOptions" :key="item.userPhone" :label="item.userName"
:value="item.userPhone">
<span style="float: left">{{ item.userName }}</span>
<span
style="
<span style="
float: right;
color: var(--el-text-color-secondary);
font-size: 13px;
"
>
">
{{ item.userPhone }}
</span>
</el-option>
@ -221,20 +184,14 @@
</el-form-item>
<el-form-item label="技术专员" prop="technicianUser">
<el-select v-model="form.technicianUser" placeholder="请选择技术专员" style="width: 100%">
<el-option
v-for="item in technicianUserOptions"
:key="item.userPhone"
:label="item.userName"
:value="item.userPhone"
>
<el-option v-for="item in technicianUserOptions" :key="item.userPhone" :label="item.userName"
:value="item.userPhone">
<span style="float: left">{{ item.userName }}</span>
<span
style="
<span style="
float: right;
color: var(--el-text-color-secondary);
font-size: 13px;
"
>
">
{{ item.userPhone }}
</span>
</el-option>
@ -242,44 +199,31 @@
</el-form-item>
<el-form-item label="监理专员" prop="superviseUser">
<el-select v-model="form.superviseUser" placeholder="请选择监理专员" style="width: 100%">
<el-option
v-for="item in superviseUserOptions"
:key="item.userPhone"
:label="item.userName"
:value="item.userPhone"
>
<el-option v-for="item in superviseUserOptions" :key="item.userPhone" :label="item.userName"
:value="item.userPhone">
<span style="float: left">{{ item.userName }}</span>
<span
style="
<span style="
float: right;
color: var(--el-text-color-secondary);
font-size: 13px;
"
>
">
{{ item.userPhone }}
</span>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="验收时间" prop="checkingDate">
<el-date-picker
v-model="form.checkingDate"
type="date" style="width:100%"
value-format="YYYY-MM-DD"
<el-date-picker v-model="form.checkingDate" type="date" style="width:100%" value-format="YYYY-MM-DD"
placeholder="请选择验收时间">
</el-date-picker>
</el-form-item>
<el-form-item label="三方验收照" prop="checkingFiles">
<image-upload v-model="form.checkingFiles" :limit="1"/>
<image-upload v-model="form.checkingFiles" :limit="1" />
</el-form-item>
<el-form-item label="验收结果" prop="checkResult">
<el-select v-model="form.checkResult" placeholder="请选择验收结果" style="width:100%">
<el-option
v-for="dict in project_checking_result"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
<el-option v-for="dict in project_checking_result" :key="dict.value" :label="dict.label"
:value="dict.value"></el-option>
</el-select>
</el-form-item>
</el-form>
@ -296,6 +240,7 @@
<script setup name="ProjectChecked">
import { fileAllUsers } from '@/api/manage/proProjectInfoSubdeptsUsers'
import { listProjectChecked, getProjectChecked, delProjectChecked, addProjectChecked, updateProjectChecked, findCheckAllPlanDatas } from "@/api/manage/projectChecked";
import { listProProjectInfoSubdeptsUsers } from '@/api/manage/proProjectInfoSubdeptsUsers'
import useUserStore from "@/store/modules/user";
const { proxy } = getCurrentInstance();
@ -322,8 +267,8 @@ const data = reactive({
pageNum: 1,
pageSize: 10,
checkResult: null,
technicianUserName: null,
superviseUserName: null,
technicianUserName: '',
superviseUserName: '',
checkingDate: null
},
rules: {
@ -342,6 +287,7 @@ const data = reactive({
const { queryParams, form, rules } = toRefs(data);
/** 查询项目举牌验收列表 */
function getList() {
loading.value = true;
@ -441,23 +387,23 @@ function handleUpdate(row) {
function submitForm() {
proxy.$refs["projectCheckedRef"].validate(valid => {
if (valid) {
if(form.value.groupDeptUser){
groupUserOptions.forEach(item => {
if(item.userPhone==form.value.groupDeptUser){
if (form.value.groupDeptUser) {
groupUserOptions.value.forEach(item => {
if (item.userPhone == form.value.groupDeptUser) {
form.value.groupDeptUserName = item.userName;
}
});
}
if(form.value.technicianUser){
technicianUserOptions.forEach(item => {
if(item.userPhone==form.value.technicianUser){
if (form.value.technicianUser) {
technicianUserOptions.value.forEach(item => {
if (item.userPhone == form.value.technicianUser) {
form.value.technicianUserName = item.userName;
}
});
}
if(form.value.superviseUser){
superviseUserOptions.forEach(item => {
if(item.userPhone==form.value.superviseUser){
if (form.value.superviseUser) {
superviseUserOptions.value.forEach(item => {
if (item.userPhone == form.value.superviseUser) {
form.value.superviseUserName = item.userName;
}
});
@ -483,12 +429,12 @@ function submitForm() {
/** 删除按钮操作 */
function handleDelete(row) {
const _ids = row.id || ids.value;
proxy.$modal.confirm('是否确认删除项目举牌验收编号为"' + _ids + '"的数据项?').then(function() {
proxy.$modal.confirm('是否确认删除项目举牌验收编号为"' + _ids + '"的数据项?').then(function () {
return delProjectChecked(_ids);
}).then(() => {
getList();
proxy.$modal.msgSuccess("删除成功");
}).catch(() => {});
}).catch(() => { });
}
/** 导出按钮操作 */
@ -510,7 +456,7 @@ function buildTree(all, id) {
/** 初始化计划管理 */
function initPlanDatas() {
if(userStore.currentPrjId){
if (userStore.currentPrjId) {
findCheckAllPlanDatas(userStore.currentPrjId).then((res) => {
let treeDatas = buildTree(res.data, 1);
planOptions.value = treeDatas;
@ -518,25 +464,35 @@ function initPlanDatas() {
}
}
function checkSysRole(user,role){
let tmp=user.sysRoles;
if(!tmp){
return false;
}
let tmps=tmp.split(",");
return tmps.find(it=>it.indexOf(role)==0);
}
function initUserOptions() {
if(userStore.currentPrjId){
findUsers(proId).then((res) => {
let _groupUserOptions = [];
let _technicianUserOptions = [];
let _superviseUserOptions = [];
res.data.forEach(item => {
if(item.userPost=='3'){
_groupUserOptions.push(item);
}else if(item.userPost=='8'){
_technicianUserOptions.push(item);
}else if(item.userPost=='71'){
_superviseUserOptions.push(item);
}
if (userStore.currentPrjId) {
listProProjectInfoSubdeptsUsers({ projectId: userStore.currentPrjId, pageNum: 1, pageSize: 1000 }).then((res) => {
let _groupUserOptions = [];
let _technicianUserOptions = [];
let _superviseUserOptions = [];
let users = res.rows || [];
users.forEach(item => {
if (item.userPost == '3') {
_groupUserOptions.push(item);
} else if (checkSysRole(item,'zbjsy_')) {
_technicianUserOptions.push(item);
} else if (item.userPost == '71') {
_superviseUserOptions.push(item);
}
});
groupUserOptions.value = _groupUserOptions;
technicianUserOptions.value = _technicianUserOptions;
superviseUserOptions.value = _superviseUserOptions;
});
groupUserOptions.value = _groupUserOptions;
technicianUserOptions.value = _technicianUserOptions;
superviseUserOptions.value = _superviseUserOptions;
});
}
}

View File

@ -123,7 +123,7 @@
</el-row>
<!-- 添加或修改用户配置对话框 -->
<el-dialog :title="title" v-model="open" width="880px" append-to-body modal-class="sys-user-manage-dlg">
<el-dialog :title="title" v-model="open" width="880px" append-to-body modal-class="sys-user-manage-dlg" :close-on-press-escape="false" :close-on-click-modal="false">
<el-form :model="form" :rules="rules" ref="userRef" label-width="88px" :validate-on-rule-change="false">
<el-row>
<el-col :span="24">