提交代码

dev_xds
姜玉琦 2023-08-20 15:46:23 +08:00
parent b9613287b6
commit 1909a4d9eb
32 changed files with 1548 additions and 548 deletions

View File

@ -56,7 +56,7 @@ public class SysLoginController
*
* @return
*/
@GetMapping("getInfo")
@GetMapping("/getInfo")
public AjaxResult getInfo()
{
SysUser user = SecurityUtils.getLoginUser().getUser();
@ -76,7 +76,7 @@ public class SysLoginController
*
* @return
*/
@GetMapping("getRouters")
@GetMapping("/getRouters")
public AjaxResult getRouters()
{
Long userId = SecurityUtils.getUserId();

View File

@ -10,6 +10,11 @@ public enum PublicStateEnum {
OK("0", "正常"),
DISABLE("1", "停用"),
DELETED("2", "删除"),
USERTYPE_JFJL("21", "甲方经理"),
/**********************************项目验收***************************************/
PROJECT_CHECK_TYPE_JPYS("1", "举牌验收"),
PROJECT_CHECK_POSITION_TYPE("1", "默认工序部位类型"),
/**********************************项目验收***************************************/
COMZGS("1","子公司状态标识");
private final String code;

View File

@ -17,14 +17,6 @@ export function deptWroksViewData(query) {
})
}
export function unitList(query) {
return request({
url: '/project/projectDeptWroks/unitList',
method: 'get',
params: query
})
}
// 查询在岗人员详细
export function getProjectDeptWroks(id) {
return request({

View File

@ -37,11 +37,29 @@ const getUserList = (data) => {
})
}
const queryUnitList = (query) => {
return request({
url: '/publics/queryUnitList',
method: 'get',
params: query
})
}
const selectProjectUnitUser = (query) => {
return request({
url: '/publics/selectProjectUnitUser',
method: 'get',
params: query
})
}
export default{
getMyDeptList,
getDeptTree,
getZgsDeptList,
getMyProjectList,
getUserList
getUserList,
queryUnitList,
selectProjectUnitUser,
}

View File

@ -1,40 +1,59 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="项目主键" prop="projectId">
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="68px"
>
<el-form-item label="项目名称" prop="projectName">
<el-input
v-model="queryParams.projectId"
placeholder="请输入项目主键"
v-model="queryParams.projectName"
placeholder="请输入项目名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="部门主键" prop="deptId">
<el-form-item label="单位名称" prop="deptName">
<el-input
v-model="queryParams.deptId"
placeholder="请输入部门主键"
v-model="queryParams.deptName"
placeholder="请输入单位名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="分包单位主键" prop="groupDeptId">
<el-input
v-model="queryParams.groupDeptId"
placeholder="请输入分包单位主键"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="验收工序部位" prop="checkWorkingPosition">
<el-form-item label="工序部位" prop="checkWorkingPosition">
<el-input
v-model="queryParams.checkWorkingPosition"
placeholder="请输入验收工序部位"
placeholder="请输入工序部位"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="质量专员" prop="qualityUser">
<el-input
v-model="queryParams.qualityUser"
placeholder="请输入质量专员"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="监理专员" prop="superviseUser">
<el-input
v-model="queryParams.superviseUser"
placeholder="请输入监理专员"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="验收结果" prop="checkResult">
<el-select v-model="queryParams.checkResult" placeholder="请选择验收结果" clearable>
<el-select
v-model="queryParams.checkResult"
placeholder="请选择验收结果"
clearable
>
<el-option
v-for="dict in dict.type.project_checking_result"
:key="dict.value"
@ -43,54 +62,6 @@
/>
</el-select>
</el-form-item>
<el-form-item label="质量用户" prop="qualityUser">
<el-input
v-model="queryParams.qualityUser"
placeholder="请输入质量用户"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="质量用户名称" prop="qualityUserName">
<el-input
v-model="queryParams.qualityUserName"
placeholder="请输入质量用户名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="监理用户" prop="superviseUser">
<el-input
v-model="queryParams.superviseUser"
placeholder="请输入监理用户"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="监理用户名称" prop="superviseUserName">
<el-input
v-model="queryParams.superviseUserName"
placeholder="请输入监理用户名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="分包单位用户" prop="groupDeptUser">
<el-input
v-model="queryParams.groupDeptUser"
placeholder="请输入分包单位用户"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="分包单位用户名称" prop="groupDeptUserName">
<el-input
v-model="queryParams.groupDeptUserName"
placeholder="请输入分包单位用户名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="验收时间">
<el-date-picker
v-model="daterangeCheckingDate"
@ -102,24 +73,16 @@
end-placeholder="结束日期"
></el-date-picker>
</el-form-item>
<el-form-item label="数据状态" prop="isDel">
<el-select v-model="queryParams.isDel" placeholder="请选择数据状态" clearable>
<el-option
v-for="dict in dict.type.sys_common_isdel"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<!-- <el-col :span="1.5">
<el-button
type="primary"
plain
@ -127,8 +90,9 @@
size="mini"
@click="handleAdd"
v-hasPermi="['project:projectChecking:add']"
>新增</el-button>
</el-col>
>新增</el-button
>
</el-col> -->
<el-col :span="1.5">
<el-button
type="success"
@ -138,7 +102,8 @@
:disabled="single"
@click="handleUpdate"
v-hasPermi="['project:projectChecking:edit']"
>修改</el-button>
>修改</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
@ -149,7 +114,8 @@
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['project:projectChecking:remove']"
>删除</el-button>
>删除</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
@ -159,73 +125,152 @@
size="mini"
@click="handleExport"
v-hasPermi="['project:projectChecking:export']"
>导出</el-button>
>导出</el-button
>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="projectCheckingList" @selection-change="handleSelectionChange">
<el-table
v-loading="loading"
:data="projectCheckingList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="主键" align="center" prop="id" />
<el-table-column label="项目主键" align="center" prop="projectId" />
<el-table-column label="部门主键" align="center" prop="deptId" />
<el-table-column label="分包单位主键" align="center" prop="groupDeptId" />
<el-table-column label="验收类型" align="center" prop="checkType" />
<el-table-column label="验收主图" align="center" prop="mainImage" width="100">
<el-table-column
label="项目名称"
align="center"
prop="projectName"
width="200"
fixed="left"
show-overflow-tooltip
/>
<el-table-column
label="部门名称"
align="center"
prop="deptName"
width="180"
show-overflow-tooltip
/>
<el-table-column label="验收主图" align="center" prop="mainImage" width="220">
<template slot-scope="scope">
<image-preview :src="scope.row.mainImage" :width="50" :height="50"/>
<el-image
ref="preview"
style="width: 200px; height: 100px"
:src="getImageUrl(scope.row.mainImage)"
@click="onPreview(scope.row.imageUrls)"
></el-image>
</template>
</el-table-column>
<el-table-column
label="验收工序部位"
align="center"
prop="checkWorkingPosition"
width="180"
show-overflow-tooltip
/>
<el-table-column
label="验收描述"
align="center"
prop="intro"
width="180"
show-overflow-tooltip
/>
<el-table-column
label="质量专员"
align="left"
prop="qualityUser"
width="130"
show-overflow-tooltip
>
<template slot-scope="scope">
<div>{{ scope.row.qualityUserName }}</div>
<div>{{ scope.row.qualityUser }}</div>
</template>
</el-table-column>
<el-table-column
label="监理专员"
align="left"
prop="superviseUser"
width="130"
show-overflow-tooltip
>
<template slot-scope="scope">
<div>{{ scope.row.superviseUserName }}</div>
<div>{{ scope.row.superviseUser }}</div>
</template>
</el-table-column>
<el-table-column
label="验收时间"
align="center"
prop="checkingDate"
width="180"
show-overflow-tooltip
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.checkingDate, "{y}-{m}-{d} {h}:{i}") }}</span>
</template>
</el-table-column>
<el-table-column label="图片列表" align="center" prop="imageUrls" />
<el-table-column label="验收工序部位类型" align="center" prop="workingPositionType" />
<el-table-column label="验收工序部位" align="center" prop="checkWorkingPosition" />
<el-table-column label="验收次数" align="center" prop="checkingNum" />
<el-table-column label="验收结果" align="center" prop="checkResult">
<template slot-scope="scope">
<dict-tag :options="dict.type.project_checking_result" :value="scope.row.checkResult"/>
<dict-tag
:options="dict.type.project_checking_result"
:value="scope.row.checkResult"
/>
</template>
</el-table-column>
<el-table-column label="验收描述" align="center" prop="intro" />
<el-table-column label="质量用户" align="center" prop="qualityUser" />
<el-table-column label="质量用户名称" align="center" prop="qualityUserName" />
<el-table-column label="监理用户" align="center" prop="superviseUser" />
<el-table-column label="监理用户名称" align="center" prop="superviseUserName" />
<el-table-column label="分包单位用户" align="center" prop="groupDeptUser" />
<el-table-column label="分包单位用户名称" align="center" prop="groupDeptUserName" />
<el-table-column label="验收时间" align="center" prop="checkingDate" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.checkingDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="验收附件" align="center" prop="checkingFiles" />
<el-table-column label="数据状态" align="center" prop="isDel">
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_common_isdel" :value="scope.row.isDel"/>
<dict-tag :options="dict.type.sys_common_isdel" :value="scope.row.isDel" />
</template>
</el-table-column>
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<el-table-column
label="备注"
align="center"
prop="remark"
width="100"
show-overflow-tooltip
/>
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
width="120"
fixed="right"
>
<template slot-scope="scope">
<el-button
v-if="scope.row.checkingFiles != null"
size="mini"
type="text"
icon="el-icon-paperclip"
@click="handledownload(scope.row)"
v-hasPermi="['project:projectChecking:list']"
>下载附件</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['project:projectChecking:edit']"
>修改</el-button>
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['project:projectChecking:remove']"
>删除</el-button>
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@ -233,80 +278,87 @@
/>
<!-- 添加或修改项目验收对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-dialog :title="title" :visible.sync="open" width="780px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="项目主键" prop="projectId">
<el-input v-model="form.projectId" placeholder="请输入项目主键" />
<el-form-item label="验收图片" prop="imageUrls">
<image-upload v-model="form.imageUrls" :limit="9" />
</el-form-item>
<el-form-item label="部门主键" prop="deptId">
<el-input v-model="form.deptId" placeholder="请输入部门主键" />
</el-form-item>
<el-form-item label="分包单位主键" prop="groupDeptId">
<el-input v-model="form.groupDeptId" placeholder="请输入分包单位主键" />
</el-form-item>
<el-form-item label="验收主图" prop="mainImage">
<image-upload v-model="form.mainImage"/>
</el-form-item>
<el-form-item label="图片列表" prop="imageUrls">
<el-input v-model="form.imageUrls" placeholder="请输入图片列表" />
</el-form-item>
<el-form-item label="验收工序部位" prop="checkWorkingPosition">
<el-input v-model="form.checkWorkingPosition" placeholder="请输入验收工序部位" />
</el-form-item>
<el-form-item label="验收次数" prop="checkingNum">
<el-input v-model="form.checkingNum" placeholder="请输入验收次数" />
</el-form-item>
<el-form-item label="验收结果" prop="checkResult">
<el-select v-model="form.checkResult" placeholder="请选择验收结果">
<el-option
v-for="dict in dict.type.project_checking_result"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
<el-form-item label="质量专员" prop="qualityUser">
<el-select
v-model="form.qualityUser"
placeholder="请选择质量专员"
filterable
style="width: 100%"
@change="selectQualityUser"
>
<el-option-group
v-for="group in deptUserData"
:key="group.unitId + ''"
:label="group.unitName + ' [' + group.unitTypeName + '] '"
>
<el-option
v-for="item in group.userinfoList"
:key="item.phonenumber"
:label="item.nickName + ' [' + item.jobTypeName + '] '"
:value="item.phonenumber"
>
</el-option>
</el-option-group>
</el-select>
</el-form-item>
<el-form-item label="监理专员" prop="superviseUser">
<el-select
v-model="form.superviseUser"
placeholder="请选择监理专员"
filterable
style="width: 100%"
@change="selectSuperviseUser"
>
<el-option-group
v-for="group in deptUserData"
:key="group.unitId + ''"
:label="group.unitName + ' [' + group.unitTypeName + '] '"
>
<el-option
v-for="item in group.userinfoList"
:key="item.phonenumber"
:label="item.nickName + ' [' + item.jobTypeName + '] '"
:value="item.phonenumber"
>
</el-option>
</el-option-group>
</el-select>
</el-form-item>
<el-form-item label="工序部位" prop="checkWorkingPosition">
<el-input
type="textarea"
v-model="form.checkWorkingPosition"
placeholder="请输入验收工序部位"
/>
</el-form-item>
<el-form-item label="验收描述" prop="intro">
<el-input v-model="form.intro" type="textarea" placeholder="请输入内容" />
</el-form-item>
<el-form-item label="质量用户" prop="qualityUser">
<el-input v-model="form.qualityUser" placeholder="请输入质量用户" />
</el-form-item>
<el-form-item label="质量用户名称" prop="qualityUserName">
<el-input v-model="form.qualityUserName" placeholder="请输入质量用户名称" />
</el-form-item>
<el-form-item label="监理用户" prop="superviseUser">
<el-input v-model="form.superviseUser" placeholder="请输入监理用户" />
</el-form-item>
<el-form-item label="监理用户名称" prop="superviseUserName">
<el-input v-model="form.superviseUserName" placeholder="请输入监理用户名称" />
</el-form-item>
<el-form-item label="分包单位用户" prop="groupDeptUser">
<el-input v-model="form.groupDeptUser" placeholder="请输入分包单位用户" />
</el-form-item>
<el-form-item label="分包单位用户名称" prop="groupDeptUserName">
<el-input v-model="form.groupDeptUserName" placeholder="请输入分包单位用户名称" />
</el-form-item>
<el-form-item label="验收时间" prop="checkingDate">
<el-date-picker clearable
<el-date-picker
style="width: 100%"
v-model="form.checkingDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择验收时间">
type="datetime"
placeholder="选择日期时间"
default-time="10:00:00"
>
</el-date-picker>
</el-form-item>
<el-form-item label="验收附件" prop="checkingFiles">
<el-input v-model="form.checkingFiles" type="textarea" placeholder="请输入内容" />
</el-form-item>
<el-form-item label="数据状态" prop="isDel">
<el-select v-model="form.isDel" placeholder="请选择数据状态">
<el-option
v-for="dict in dict.type.sys_common_isdel"
:key="dict.value"
:label="dict.label"
:value="parseInt(dict.value)"
></el-option>
</el-select>
<el-form-item label="验收结果" prop="checkResult">
<el-radio
v-model="form.checkResult"
v-for="dict in dict.type.project_checking_result"
:label="dict.value"
:key="dict.value"
border
size="small"
>{{ dict.label }}</el-radio
>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" />
@ -317,17 +369,29 @@
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<el-image-viewer v-if="showViewer" :on-close="closeViewer" :url-list="previewList" />
</div>
</template>
<script>
import { listProjectChecking, getProjectChecking, delProjectChecking, addProjectChecking, updateProjectChecking } from "@/api/project/projectChecking";
import {
listProjectChecking,
getProjectChecking,
delProjectChecking,
addProjectChecking,
updateProjectChecking,
} from "@/api/project/projectChecking";
import ElImageViewer from "element-ui/packages/image/src/image-viewer";
export default {
name: "ProjectChecking",
dicts: ['project_checking_result', 'sys_common_isdel'],
components: {
ElImageViewer,
},
dicts: ["sys_common_isdel", "project_checking_result"],
data() {
return {
showViewer: false,
//
loading: true,
//
@ -367,27 +431,57 @@ export default {
groupDeptUserName: null,
checkingDate: null,
isDel: null,
projectName: null,
deptName: null,
},
//
form: {},
//
rules: {
}
imageUrls: [{ required: true, message: "请上传验收图片", trigger: "blur" }],
qualityUser: [{ required: true, message: "请选择质量专员", trigger: "blur" }],
superviseUser: [{ required: true, message: "请选择监理专员", trigger: "blur" }],
checkWorkingPosition: [
{ required: true, message: "请输入验收工序部位", trigger: "blur" },
{ max: 200, message: "验收工序部位最多200字符", trigger: "blur" },
],
intro: [
{ required: true, message: "请输入验收描述", trigger: "blur" },
{ max: 200, message: "验收描述最多200字符", trigger: "blur" },
],
checkingDate: [{ required: true, message: "请选择验收时间", trigger: "blur" }],
checkResult: [{ required: true, message: "请选择验收结果", trigger: "blur" }],
},
deptUserData: [],
previewList: [],
};
},
created() {
this.getList();
},
methods: {
getImageUrl(url) {
return process.env.VUE_APP_BASE_API + url + ".min.jpg";
},
onPreview(urls) {
this.previewList = [];
urls.split(",").forEach((item) => {
this.previewList.push(process.env.VUE_APP_BASE_API + item);
});
this.showViewer = true;
},
closeViewer() {
this.showViewer = false;
},
/** 查询项目验收列表 */
getList() {
this.loading = true;
this.queryParams.params = {};
if (null != this.daterangeCheckingDate && '' != this.daterangeCheckingDate) {
if (null != this.daterangeCheckingDate && "" != this.daterangeCheckingDate) {
this.queryParams.params["beginCheckingDate"] = this.daterangeCheckingDate[0];
this.queryParams.params["endCheckingDate"] = this.daterangeCheckingDate[1];
}
listProjectChecking(this.queryParams).then(response => {
listProjectChecking(this.queryParams).then((response) => {
this.projectCheckingList = response.rows;
this.total = response.total;
this.loading = false;
@ -426,7 +520,7 @@ export default {
createTime: null,
updateBy: null,
updateTime: null,
remark: null
remark: null,
};
this.resetForm("form");
},
@ -443,9 +537,9 @@ export default {
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length!==1
this.multiple = !selection.length
this.ids = selection.map((item) => item.id);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
/** 新增按钮操作 */
handleAdd() {
@ -456,25 +550,32 @@ export default {
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids
getProjectChecking(id).then(response => {
const id = row.id || this.ids;
getProjectChecking(id).then((response) => {
this.form = response.data;
this.open = true;
this.title = "修改项目验收";
this.$api.publics
.selectProjectUnitUser({
projectId: response.data.projectId,
})
.then((d) => {
this.deptUserData = d.data;
});
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.id != null) {
updateProjectChecking(this.form).then(response => {
updateProjectChecking(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addProjectChecking(this.form).then(response => {
addProjectChecking(this.form).then((response) => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
@ -486,19 +587,54 @@ export default {
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除项目验收编号为"' + ids + '"的数据项?').then(function() {
return delProjectChecking(ids);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
this.$modal
.confirm('是否确认删除项目验收编号为"' + ids + '"的数据项?')
.then(function () {
return delProjectChecking(ids);
})
.then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
})
.catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download('project/projectChecking/export', {
...this.queryParams
}, `projectChecking_${new Date().getTime()}.xlsx`)
}
}
this.download(
"project/projectChecking/export",
{
...this.queryParams,
},
`projectChecking_${new Date().getTime()}.xlsx`
);
},
/** 选择质量专员*/
selectQualityUser(val) {
this.deptUserData.forEach((item) => {
item.userinfoList.forEach((u) => {
if (u.phonenumber == val) {
this.form.qualityUserName = u.nickName + " [" + u.jobTypeName + "] ";
}
});
});
},
/** 选择监理专员*/
selectSuperviseUser(val) {
this.deptUserData.forEach((item) => {
item.userinfoList.forEach((u) => {
if (u.phonenumber == val) {
this.form.superviseUserName = u.nickName + " [" + u.jobTypeName + "] ";
}
});
});
},
/** 下载附件 */
handleDownload(row) {
this.files = row.checkingFiles.split(",");
this.files.forEach((item) => {
this.$download.resource(item);
});
},
},
};
</script>

View File

@ -0,0 +1,583 @@
<template>
<div class="projectect-attendance-drawer">
<el-drawer
v-if="isOpen"
:visible.sync="isOpen"
direction="rtl"
size="65%"
style="padding-left: 20px"
>
<template slot="title">
<div>{{ title + " 【举牌验收管理】" }}</div>
</template>
<el-tabs
v-model="activeName"
style="margin-left: 20px; margin-right: 20px"
@tab-click="getList"
>
<el-tab-pane
v-for="(it, idx) in nodes"
:label="it.unitName + ''"
:name="it.unitId + ''"
:key="idx"
></el-tab-pane>
</el-tabs>
<el-row
:gutter="10"
class="mb8"
style="margin-left: 20px; margin-top: 10px; margin-right: 20px"
>
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['project:projectChecking:add']"
>新增</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['project:projectChecking:edit']"
>修改</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['project:projectChecking:remove']"
>删除</el-button
>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="projectCheckingList">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="验收图片" align="center" prop="mainImage" width="80">
<template slot-scope="scope">
<el-image
ref="preview"
style="width: 50px; height: 50px"
:src="getImageUrl(scope.row.mainImage)"
@click="onPreview(scope.row.imageUrls)"
></el-image>
</template>
</el-table-column>
<el-table-column
label="验收工序部位"
align="left"
prop="checkWorkingPosition"
width="220"
show-overflow-tooltip
/>
<el-table-column
label="验收描述"
align="left"
prop="intro"
width="220"
show-overflow-tooltip
/>
<el-table-column
label="质量专员"
align="left"
prop="qualityUser"
width="120"
show-overflow-tooltip
>
<template slot-scope="scope">
<div>{{ scope.row.qualityUserName }}</div>
<div>{{ scope.row.qualityUser }}</div>
</template>
</el-table-column>
<el-table-column
label="监理专员"
align="left"
prop="superviseUser"
width="120"
show-overflow-tooltip
>
<template slot-scope="scope">
<div>{{ scope.row.superviseUserName }}</div>
<div>{{ scope.row.superviseUser }}</div>
</template>
</el-table-column>
<el-table-column
label="验收时间"
align="center"
prop="checkingDate"
width="150"
show-overflow-tooltip
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.checkingDate, "{y}-{m}-{d} {h}:{i}") }}</span>
</template>
</el-table-column>
<el-table-column label="验收结果" align="center" prop="checkResult" width="80">
<template slot-scope="scope">
<dict-tag
:options="dict.type.project_checking_result"
:value="scope.row.checkResult"
/>
</template>
</el-table-column>
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<template slot-scope="scope">
<el-button
v-if="scope.row.checkingFiles != null"
size="mini"
type="text"
icon="el-icon-paperclip"
@click="handledownload(scope.row)"
v-hasPermi="['project:projectChecking:list']"
>下载附件</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['project:projectChecking:edit']"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['project:projectChecking:remove']"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改项目举牌验收对话框 -->
<el-dialog :title="title" :visible.sync="open" width="780px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="项目名称" prop="projectName">
<el-input
v-model="form.projectName"
placeholder="请输入项目名称"
:disabled="true"
/>
</el-form-item>
<el-form-item label="单位名称" prop="deptName">
<el-input
v-model="form.deptName"
placeholder="请输入单位名称"
:disabled="true"
/>
</el-form-item>
<el-form-item label="验收图片" prop="imageUrls">
<image-upload v-model="form.imageUrls" :limit="9" />
</el-form-item>
<el-form-item label="质量专员" prop="qualityUser">
<el-select
v-model="form.qualityUser"
placeholder="请选择质量专员"
filterable
style="width: 100%"
@change="selectQualityUser"
>
<el-option-group
v-for="group in deptUserData"
:key="group.unitId + ''"
:label="group.unitName + ' [' + group.unitTypeName + '] '"
>
<el-option
v-for="item in group.userinfoList"
:key="item.phonenumber"
:label="item.nickName + ' [' + item.jobTypeName + '] '"
:value="item.phonenumber"
>
</el-option>
</el-option-group>
</el-select>
</el-form-item>
<el-form-item label="监理专员" prop="superviseUser">
<el-select
v-model="form.superviseUser"
placeholder="请选择监理专员"
filterable
style="width: 100%"
@change="selectSuperviseUser"
>
<el-option-group
v-for="group in deptUserData"
:key="group.unitId + ''"
:label="group.unitName + ' [' + group.unitTypeName + '] '"
>
<el-option
v-for="item in group.userinfoList"
:key="item.phonenumber"
:label="item.nickName + ' [' + item.jobTypeName + '] '"
:value="item.phonenumber"
>
</el-option>
</el-option-group>
</el-select>
</el-form-item>
<el-form-item label="工序部位" prop="checkWorkingPosition">
<el-input
type="textarea"
v-model="form.checkWorkingPosition"
placeholder="请输入验收工序部位"
/>
</el-form-item>
<el-form-item label="验收描述" prop="intro">
<el-input v-model="form.intro" type="textarea" placeholder="请输入内容" />
</el-form-item>
<el-form-item label="验收时间" prop="checkingDate">
<el-date-picker
style="width: 100%"
v-model="form.checkingDate"
type="datetime"
placeholder="选择日期时间"
default-time="10:00:00"
>
</el-date-picker>
</el-form-item>
<el-form-item label="验收结果" prop="checkResult">
<el-radio
v-model="form.checkResult"
v-for="dict in dict.type.project_checking_result"
:label="dict.value"
:key="dict.value"
border
size="small"
>{{ dict.label }}</el-radio
>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</el-drawer>
<el-image-viewer
v-if="showViewer"
:on-close="closeViewer"
:url-list="previewList"
style="z-index: 2050"
/>
</div>
</template>
<script>
import { mapGetters } from "vuex";
import {
listProjectChecking,
getProjectChecking,
delProjectChecking,
addProjectChecking,
updateProjectChecking,
} from "@/api/project/projectChecking";
import ElImageViewer from "element-ui/packages/image/src/image-viewer";
export default {
name: "RuoyiUiProjectDeptWroksDrawer",
components: {
ElImageViewer,
},
dicts: ["project_checking_result"],
data() {
return {
showViewer: false,
open: false,
isOpen: false,
project: null,
title: "",
isUnit: true,
nodes: [],
form: {},
rules: {
imageUrls: [{ required: true, message: "请上传验收图片", trigger: "blur" }],
qualityUser: [{ required: true, message: "请选择质量专员", trigger: "blur" }],
superviseUser: [{ required: true, message: "请选择监理专员", trigger: "blur" }],
checkWorkingPosition: [
{ required: true, message: "请输入验收工序部位", trigger: "blur" },
{ max: 200, message: "验收工序部位最多200字符", trigger: "blur" },
],
intro: [
{ required: true, message: "请输入验收描述", trigger: "blur" },
{ max: 200, message: "验收描述最多200字符", trigger: "blur" },
],
checkingDate: [{ required: true, message: "请选择验收时间", trigger: "blur" }],
checkResult: [{ required: true, message: "请选择验收结果", trigger: "blur" }],
},
projectCheckingList: [],
activeName: "",
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
queryParams: {
pageNum: 1,
pageSize: 10,
projectId: null,
deptId: null,
},
deptUserData: [],
previewList: [],
};
},
computed: {
...mapGetters(["dept"]),
},
mounted() {},
methods: {
getImageUrl(url) {
return process.env.VUE_APP_BASE_API + url + ".min.jpg";
},
onPreview(urls) {
this.previewList = [];
urls.split(",").forEach((item) => {
this.previewList.push(process.env.VUE_APP_BASE_API + item);
});
this.showViewer = true;
},
closeViewer() {
this.showViewer = false;
},
doOk() {
updateProjectDeptWroks(this.form).then((response) => {
this.$modal.msgSuccess("保存成功");
this.isOpen = false;
});
},
doCanel() {
this.isOpen = false;
},
show(project) {
this.project = project;
this.title = project.projectName;
this.isOpen = true;
this.queryParams.projectId = project.id;
this.$api.publics
.queryUnitList({
projectId: project.id,
unitType: 2,
})
.then((d) => {
this.nodes = d.rows;
if (d.rows.length > 0) {
this.activeName = this.nodes[0].unitId + "";
this.isUnit = true;
this.getList();
} else {
this.$message.error("当前项目未分配总包单位,不能办理举牌验收!");
this.isUnit = false;
}
});
this.$api.publics
.selectProjectUnitUser({
projectId: project.id,
})
.then((d) => {
this.deptUserData = d.data;
});
},
//
getList() {
this.queryParams.deptId = this.activeName;
this.loading = true;
listProjectChecking(this.queryParams).then((response) => {
this.projectCheckingList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
id: null,
projectId: null,
deptId: null,
insuranceType: null,
insuranceNumber: null,
insuranceFile: null,
insuranceState: null,
beginDate: null,
endDate: null,
companyName: null,
isDel: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
remark: null,
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map((item) => item.id);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
/** 新增按钮操作 */
handleAdd() {
if (this.nodes.length > 0) {
this.reset();
this.form.projectId = this.project.id;
this.form.projectName = this.project.projectName;
this.form.deptId = this.activeName;
this.nodes.forEach((item) => {
if (item.unitId == this.activeName) {
this.form.deptName = item.unitName;
}
});
this.open = true;
this.title = "添加项目举牌验收";
} else {
this.$message.error("当前项目未分配总包单位,不能办理举牌验收!");
}
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids;
getProjectChecking(id).then((response) => {
this.form = response.data;
this.form.projectName = this.project.projectName;
this.nodes.forEach((item) => {
if (item.unitId == this.activeName) {
this.form.deptName = item.unitName;
}
});
this.open = true;
this.title = "修改项目举牌验收";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.id != null) {
updateProjectChecking(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addProjectChecking(this.form).then((response) => {
if (response.code == 200) {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
}
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal
.confirm('是否确认删除项目举牌验收编号为"' + ids + '"的数据项?')
.then(function () {
return delProjectChecking(ids);
})
.then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
})
.catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download(
"project/ProjectChecking/export",
{
...this.queryParams,
},
`ProjectChecking_${new Date().getTime()}.xlsx`
);
},
/** 选择质量专员*/
selectQualityUser(val) {
this.deptUserData.forEach((item) => {
item.userinfoList.forEach((u) => {
if (u.phonenumber == val) {
this.form.qualityUserName = u.nickName + " [" + u.jobTypeName + "] ";
}
});
});
},
/** 选择监理专员*/
selectSuperviseUser(val) {
this.deptUserData.forEach((item) => {
item.userinfoList.forEach((u) => {
if (u.phonenumber == val) {
this.form.superviseUserName = u.nickName + " [" + u.jobTypeName + "] ";
}
});
});
},
/** 下载附件 */
handleDownload(row) {
this.files = row.checkingFiles.split(",");
this.files.forEach((item) => {
this.$download.resource(item);
});
},
},
};
</script>
<style lang="scss" scoped></style>

View File

@ -58,7 +58,6 @@
<script>
import { mapGetters } from "vuex";
import {
unitList,
deptWroksViewData,
updateProjectDeptWroks,
} from "@/api/project/projectDeptWroks";
@ -102,20 +101,22 @@ export default {
this.project = project;
this.title = project.projectName;
this.isOpen = true;
unitList({
projectId: project.id,
unitType: 2,
}).then((d) => {
this.nodes = d.rows;
if (d.rows.length > 0) {
this.activeName = this.nodes[0].unitId + "";
this.isUnit = true;
this.loadData();
} else {
this.$message.error("当前项目未分配总包单位,不能维护在册人员");
this.isUnit = false;
}
});
this.$api.publics
.queryUnitList({
projectId: project.id,
unitType: 2,
})
.then((d) => {
this.nodes = d.rows;
if (d.rows.length > 0) {
this.activeName = this.nodes[0].unitId + "";
this.isUnit = true;
this.loadData();
} else {
this.$message.error("当前项目未分配总包单位,不能维护在册人员");
this.isUnit = false;
}
});
},
//
loadData() {

View File

@ -362,10 +362,12 @@
size="mini"
@command="(command) => handleCommand(command, scope.row)"
v-hasPermi="[
'system:assess:list',
'project:assess:list',
'project:build_node_data:list',
'project:projectChecking:list',
'work:workTrain:list',
'work:emergencyDrill:list',
'project:surProjectInsurance:list',
'project:surProjectSpecial:list',
'project:projectDeptWroks:list',
'project:surProjectAttendance:add',
@ -379,7 +381,7 @@
<el-dropdown-item
command="handleAssess"
icon="el-icon-coordinate"
v-hasPermi="['system:assess:list']"
v-hasPermi="['project:assess:list']"
>季度考核管理</el-dropdown-item
>
<el-dropdown-item
@ -388,6 +390,12 @@
v-hasPermi="['project:build_node_data:list']"
>计划节点管理</el-dropdown-item
>
<el-dropdown-item
command="handleProjectChecking"
icon="el-icon-s-help"
v-hasPermi="['project:projectChecking:list']"
>举牌验收管理</el-dropdown-item
>
<el-dropdown-item
command="handleWorkTrain"
icon="el-icon-notebook-2"
@ -424,6 +432,7 @@
v-hasPermi="['project:surProjectAttendance:add']"
>今日出勤</el-dropdown-item
>
<el-dropdown-item
command="handleDelete"
icon="el-icon-delete"
@ -754,6 +763,7 @@
<attendance-drawer ref="attDrawer"></attendance-drawer>
<projectDeptWroksDrawer ref="deptWroksDrawer"></projectDeptWroksDrawer>
<insuranceDrawer ref="insurance"></insuranceDrawer>
<projectCheckingDrawer ref="projectChecking"></projectCheckingDrawer>
</div>
</template>
@ -778,6 +788,7 @@ import surProjectSpecialDrawer from "../surProjectSpecial/surProjectSpecialDrawe
import attendanceDrawer from "../surProjectAttendance/attendanceDrawer.vue";
import projectDeptWroksDrawer from "../projectDeptWroks/projectDeptWroksDrawer.vue";
import insuranceDrawer from "../surProjectInsurance/insuranceDrawer.vue";
import projectCheckingDrawer from "../projectChecking/projectCheckingDrawer.vue";
import { checkPermi, checkRole } from "@/utils/permission"; //
export default {
@ -794,6 +805,7 @@ export default {
surProjectSpecialDrawer,
projectDeptWroksDrawer,
insuranceDrawer,
projectCheckingDrawer,
},
dicts: [
"sys_check_state",
@ -1031,6 +1043,9 @@ export default {
case "handleProjectInsurance":
this.$refs.insurance.show(row);
break;
case "handleProjectChecking":
this.$refs.projectChecking.show(row);
break;
default:
break;
}

View File

@ -1,6 +1,6 @@
<template>
<div class="project-my-index">
<!--
<div class="project-my-index">
<!--
111111111111111
<div style="width: 200px;height: 148px;position: relative;display:inline-block;">
<border-box1/>
@ -12,230 +12,283 @@
<border-box3/>
</div>
-->
<div class="prj-nav">
<el-radio-group v-model="selPrj" @input="doSelPrj">
<el-radio-button v-for="(it, idx) in prjs" :key="idx" :label="it.id">{{ it.projectName }}</el-radio-button>
</el-radio-group>
</div>
<div class="prj-info">
<el-col :span="6">
<span class="sp-label">责任主体:</span>
<span class="sp-text">{{ prj.deptName }}</span>
</el-col>
<el-col :span="6">
<span class="sp-label">父级项目:</span>
<span class="sp-text">{{ prj.paretProjectName }}</span>
</el-col>
<el-col :span="6">
<span class="sp-label">项目建设类型:</span>
<span class="sp-text">{{ prj.paretProjectName }}</span>
</el-col>
<el-col :span="6">
<span class="sp-label">项目简称:</span>
<span class="sp-text">{{ prj.simpleName }}</span>
</el-col>
<el-col :span="6">
<span class="sp-label">项目分类:</span>
<span class="sp-text">{{ getprojectType(prj.projectType) }}</span>
</el-col>
<el-col :span="6">
<span class="sp-label">项目等级:</span>
<span class="sp-text">{{ getprojectLvl(prj.projiectLevel) }}</span>
</el-col>
<el-col :span="12">
<span class="sp-label">项目地址:</span>
<span class="sp-text">{{ prj.projectAddress }}</span>
</el-col>
<el-col :span="6">
<span class="sp-label">工程期限:</span>
<span class="sp-text">{{ prj.projectTimeLimit?prj.projectTimeLimit+'天':'' }}</span>
</el-col>
<el-col :span="6">
<span class="sp-label">总投资:</span>
<span class="sp-text">{{ prj.totalInvestment?prj.totalInvestment+'万元':'' }}</span>
</el-col>
<el-col :span="6">
<span class="sp-label">建筑面积:</span>
<span class="sp-text">{{ prj.floorArea?prj.floorArea+'平方米':'' }}</span>
</el-col>
<el-col :span="12">
<span class="sp-label">开累产值:</span>
<span class="sp-text">{{ prj.totalOutputValue?prj.totalOutputValue+'万元':'' }}</span>
</el-col>
<el-col :span="6">
<span class="sp-label">计划完成时间:</span>
<span class="sp-text">{{ prj.plannedCompletionTime }}</span>
</el-col>
<el-col :span="6">
<span class="sp-label">计划开工时间:</span>
<span class="sp-text">{{ prj.scheduledStartTime }}</span>
</el-col>
<el-col :span="6">
<span class="sp-label">实际开工时间:</span>
<span class="sp-text">{{ prj.actualOperatingTime }}</span>
</el-col>
<el-col :span="6">
<span class="sp-label">实际完工时间:</span>
<span class="sp-text">{{ prj.actualCompletionTime }}</span>
</el-col>
<el-col :span="6">
<span class="sp-label">合同总额:</span>
<span class="sp-text">{{ prj.contractAmount?prj.contractAmount+'万元':'' }}</span>
</el-col>
<el-col :span="6">
<span class="sp-label">付款金额:</span>
<span class="sp-text">{{ prj.paidAmount?prj.paidAmount+'万元':'' }}</span>
</el-col>
<el-col :span="6">
<span class="sp-label">挂账金额:</span>
<span class="sp-text">{{ prj.onAccountAmount?prj.onAccountAmount+'万元':'' }}</span>
</el-col>
<el-col :span="6">
<span class="sp-label">重要等级:</span>
<span class="sp-text">{{ getWeight(prj.weightType) }}</span>
</el-col>
<el-col :span="6">
<span class="sp-label">劳务人员数:</span>
<span class="sp-text">{{ prj.servicePersonnel?prj.servicePersonnel+'人':'' }}</span>
</el-col>
<el-col :span="6">
<span class="sp-label">监理人员数:</span>
<span class="sp-text">{{ prj.supervisorPersonnel?prj.supervisorPersonnel+'人':'' }}</span>
</el-col>
<el-col :span="12">
<span class="sp-label">总包人员数:</span>
<span class="sp-text">{{ prj.generalContractor?prj.generalContractor+'人':'' }}</span>
</el-col>
<el-col :span="24">
<span class="sp-label">项目概述:</span>
<span class="sp-text">{{ prj.projectSummarize }}</span>
</el-col>
</div>
<div class="tool-bar">
<el-button type="primary" @click="doPrjProcessMgr" v-hasPermi="['project:surProject:edit']" icon="el-icon-time"></el-button>
<el-button type="primary" @click="doPrjAssess" v-hasPermi="['system:assess:list']" icon="el-icon-coordinate"></el-button>
<el-button type="primary" @click="doPrjBuildNode" v-hasPermi="['project:build_node_data:list']" icon="el-icon-data-analysis"></el-button>
<el-button type="primary" @click="doPrjAttendance" v-hasPermi="['project:surProjectAttendance:add']" icon="el-icon-s-check"></el-button>
</div>
<ProjectScheduleDlg ref="prjSchDlg"></ProjectScheduleDlg>
<assess-drawer ref="assessDrawer"></assess-drawer>
<build-node-drawer ref="nodeDrawer"></build-node-drawer>
<attendance-drawer ref="attDrawer"></attendance-drawer>
<div class="prj-nav">
<el-radio-group v-model="selPrj" @input="doSelPrj">
<el-radio-button v-for="(it, idx) in prjs" :key="idx" :label="it.id">{{
it.projectName
}}</el-radio-button>
</el-radio-group>
</div>
<div class="prj-info">
<el-col :span="6">
<span class="sp-label">责任主体:</span>
<span class="sp-text">{{ prj.deptName }}</span>
</el-col>
<el-col :span="6">
<span class="sp-label">父级项目:</span>
<span class="sp-text">{{ prj.paretProjectName }}</span>
</el-col>
<el-col :span="6">
<span class="sp-label">项目建设类型:</span>
<span class="sp-text">{{ prj.paretProjectName }}</span>
</el-col>
<el-col :span="6">
<span class="sp-label">项目简称:</span>
<span class="sp-text">{{ prj.simpleName }}</span>
</el-col>
<el-col :span="6">
<span class="sp-label">项目分类:</span>
<span class="sp-text">{{ getprojectType(prj.projectType) }}</span>
</el-col>
<el-col :span="6">
<span class="sp-label">项目等级:</span>
<span class="sp-text">{{ getprojectLvl(prj.projiectLevel) }}</span>
</el-col>
<el-col :span="12">
<span class="sp-label">项目地址:</span>
<span class="sp-text">{{ prj.projectAddress }}</span>
</el-col>
<el-col :span="6">
<span class="sp-label">工程期限:</span>
<span class="sp-text">{{
prj.projectTimeLimit ? prj.projectTimeLimit + "天" : ""
}}</span>
</el-col>
<el-col :span="6">
<span class="sp-label">总投资:</span>
<span class="sp-text">{{
prj.totalInvestment ? prj.totalInvestment + "万元" : ""
}}</span>
</el-col>
<el-col :span="6">
<span class="sp-label">建筑面积:</span>
<span class="sp-text">{{ prj.floorArea ? prj.floorArea + "平方米" : "" }}</span>
</el-col>
<el-col :span="12">
<span class="sp-label">开累产值:</span>
<span class="sp-text">{{
prj.totalOutputValue ? prj.totalOutputValue + "万元" : ""
}}</span>
</el-col>
<el-col :span="6">
<span class="sp-label">计划完成时间:</span>
<span class="sp-text">{{ prj.plannedCompletionTime }}</span>
</el-col>
<el-col :span="6">
<span class="sp-label">计划开工时间:</span>
<span class="sp-text">{{ prj.scheduledStartTime }}</span>
</el-col>
<el-col :span="6">
<span class="sp-label">实际开工时间:</span>
<span class="sp-text">{{ prj.actualOperatingTime }}</span>
</el-col>
<el-col :span="6">
<span class="sp-label">实际完工时间:</span>
<span class="sp-text">{{ prj.actualCompletionTime }}</span>
</el-col>
<el-col :span="6">
<span class="sp-label">合同总额:</span>
<span class="sp-text">{{
prj.contractAmount ? prj.contractAmount + "万元" : ""
}}</span>
</el-col>
<el-col :span="6">
<span class="sp-label">付款金额:</span>
<span class="sp-text">{{ prj.paidAmount ? prj.paidAmount + "万元" : "" }}</span>
</el-col>
<el-col :span="6">
<span class="sp-label">挂账金额:</span>
<span class="sp-text">{{
prj.onAccountAmount ? prj.onAccountAmount + "万元" : ""
}}</span>
</el-col>
<el-col :span="6">
<span class="sp-label">重要等级:</span>
<span class="sp-text">{{ getWeight(prj.weightType) }}</span>
</el-col>
<el-col :span="6">
<span class="sp-label">劳务人员数:</span>
<span class="sp-text">{{
prj.servicePersonnel ? prj.servicePersonnel + "人" : ""
}}</span>
</el-col>
<el-col :span="6">
<span class="sp-label">监理人员数:</span>
<span class="sp-text">{{
prj.supervisorPersonnel ? prj.supervisorPersonnel + "人" : ""
}}</span>
</el-col>
<el-col :span="12">
<span class="sp-label">总包人员数:</span>
<span class="sp-text">{{
prj.generalContractor ? prj.generalContractor + "人" : ""
}}</span>
</el-col>
<el-col :span="24">
<span class="sp-label">项目概述:</span>
<span class="sp-text">{{ prj.projectSummarize }}</span>
</el-col>
</div>
<div class="tool-bar">
<el-button
type="primary"
@click="doPrjProcessMgr"
v-hasPermi="['project:surProject:edit']"
icon="el-icon-time"
>进度管理</el-button
>
<el-button
type="primary"
@click="doPrjAssess"
v-hasPermi="['project:assess:list']"
icon="el-icon-coordinate"
>季度考核管理</el-button
>
<el-button
type="primary"
@click="doPrjBuildNode"
v-hasPermi="['project:build_node_data:list']"
icon="el-icon-data-analysis"
>计划节点管理</el-button
>
<el-button
type="primary"
@click="doPrjAttendance"
v-hasPermi="['project:surProjectAttendance:add']"
icon="el-icon-s-check"
>今日出勤</el-button
>
</div>
<ProjectScheduleDlg ref="prjSchDlg"></ProjectScheduleDlg>
<assess-drawer ref="assessDrawer"></assess-drawer>
<build-node-drawer ref="nodeDrawer"></build-node-drawer>
<attendance-drawer ref="attDrawer"></attendance-drawer>
</div>
</template>
<script>
import { listSurProject} from "@/api/project/surProject";
import ProjectScheduleDlg from '../surProjectSchedule/ProjectScheduleDlg.vue'
import AssessDrawer from '../surProjectQuarterlyAssess/assessDrawer.vue'
import buildNodeDrawer from '../surBuildNode/buildNodeDrawer.vue'
import attendanceDrawer from '../surProjectAttendance/attendanceDrawer.vue'
import { listSurProject } from "@/api/project/surProject";
import ProjectScheduleDlg from "../surProjectSchedule/ProjectScheduleDlg.vue";
import AssessDrawer from "../surProjectQuarterlyAssess/assessDrawer.vue";
import buildNodeDrawer from "../surBuildNode/buildNodeDrawer.vue";
import attendanceDrawer from "../surProjectAttendance/attendanceDrawer.vue";
export default {
dicts: ['sys_check_state','sur_project_xmjd', 'project_build_type', 'sys_common_isdel', 'project_category','project_level','sur_project_weight'],
name: 'RuoyiUiMyIndex',
components:{
ProjectScheduleDlg,AssessDrawer,buildNodeDrawer,attendanceDrawer
},
data() {
return {
prjs: [],
selPrj: 0,
prj: {}
};
},
dicts: [
"sys_check_state",
"sur_project_xmjd",
"project_build_type",
"sys_common_isdel",
"project_category",
"project_level",
"sur_project_weight",
],
name: "RuoyiUiMyIndex",
components: {
ProjectScheduleDlg,
AssessDrawer,
buildNodeDrawer,
attendanceDrawer,
},
data() {
return {
prjs: [],
selPrj: 0,
prj: {},
};
},
mounted() {
this.loadData();
},
mounted() {
this.loadData();
},
methods: {
doPrjAttendance(){
this.$refs.attDrawer.show(this.prj);
},
getWeight(v){
let tmps=this.dict.type.sur_project_weight.filter(d=>d.value==v);
return tmps.length>0?tmps[0].label:'';
},
getprojectType(v){
let tmps=this.dict.type.project_category.filter(d=>d.value==v);
return tmps.length>0?tmps[0].label:'';
},
getprojectLvl(v){
let tmps=this.dict.type.project_level.filter(d=>d.value==v);
return tmps.length>0?tmps[0].label:'';
},
doPrjProcessMgr(){
this.$refs.prjSchDlg.showDialog(this.prj);
},
doPrjAssess(){
this.$refs.assessDrawer.show(this.prj);
},
doPrjBuildNode(){
this.$refs.nodeDrawer.show(this.prj);
},
doSelPrj(a, b) {
let tmps = this.prjs.filter(d => d.id == this.selPrj);
this.prj = tmps.length > 0 ? tmps[0] : {};
},
loadData() {
let queryParams = {
pageNum: 1,
pageSize: 40,
};
listSurProject(queryParams).then(d => {
this.prjs = d.rows || [];
if (this.prjs.length > 0) {
this.selPrj = this.prjs[0].id;
this.prj = this.prjs[0];
}
});
methods: {
doPrjAttendance() {
this.$refs.attDrawer.show(this.prj);
},
getWeight(v) {
let tmps = this.dict.type.sur_project_weight.filter((d) => d.value == v);
return tmps.length > 0 ? tmps[0].label : "";
},
getprojectType(v) {
let tmps = this.dict.type.project_category.filter((d) => d.value == v);
return tmps.length > 0 ? tmps[0].label : "";
},
getprojectLvl(v) {
let tmps = this.dict.type.project_level.filter((d) => d.value == v);
return tmps.length > 0 ? tmps[0].label : "";
},
doPrjProcessMgr() {
this.$refs.prjSchDlg.showDialog(this.prj);
},
doPrjAssess() {
this.$refs.assessDrawer.show(this.prj);
},
doPrjBuildNode() {
this.$refs.nodeDrawer.show(this.prj);
},
doSelPrj(a, b) {
let tmps = this.prjs.filter((d) => d.id == this.selPrj);
this.prj = tmps.length > 0 ? tmps[0] : {};
},
loadData() {
let queryParams = {
pageNum: 1,
pageSize: 40,
};
listSurProject(queryParams).then((d) => {
this.prjs = d.rows || [];
if (this.prjs.length > 0) {
this.selPrj = this.prjs[0].id;
this.prj = this.prjs[0];
}
});
},
},
};
</script>
<style lang="scss" scoped>
.project-my-index {
.prj-nav {
::v-deep .el-radio-group {
max-height: 304px;
overflow-y: auto;
box-shadow: 5px 5px 7px 4px rgba(0, 0, 0, 0.3);
padding: 4px;
.prj-nav {
::v-deep .el-radio-group {
max-height: 304px;
overflow-y: auto;
box-shadow: 5px 5px 7px 4px rgba(0, 0, 0, 0.3);
padding: 4px;
.el-radio-button {
margin-left: 4px;
margin-bottom: 4px;
.el-radio-button {
margin-left: 4px;
margin-bottom: 4px;
.el-radio-button__inner {
border: 1px solid #DCDFE6;
}
}
.el-radio-button__inner {
border: 1px solid #dcdfe6;
}
}
}
}
.prj-info {
box-shadow: 5px 5px 7px 4px rgba(0, 0, 0, 0.3);
margin-top: 24px;
overflow: auto;
padding: 12px;
line-height: 32px;
}
.prj-info {
box-shadow: 5px 5px 7px 4px rgba(0, 0, 0, 0.3);
margin-top: 24px;
overflow: auto;
padding: 12px;
line-height: 32px;
}
.tool-bar {
box-shadow: 5px 5px 7px 4px rgba(0, 0, 0, 0.3);
margin-top: 24px;
overflow: auto;
padding: 12px;
line-height: 32px;
}
.tool-bar {
box-shadow: 5px 5px 7px 4px rgba(0, 0, 0, 0.3);
margin-top: 24px;
overflow: auto;
padding: 12px;
line-height: 32px;
}
}
</style>

View File

@ -148,22 +148,24 @@ export default {
this.project = project;
this.title = project.projectName;
this.isOpen = true;
unitList({
projectId: project.id,
unitType: 2,
}).then((d1) => {
this.nodes = d1.rows;
if (this.nodes.length > 0) {
this.activeName = this.nodes[0].unitId + "";
this.isUnit = true;
this.loadData();
} else {
this.$message.error(
"当前项目未分配总包单位,未登记在册人员,今日出勤数据不能维护!"
);
this.isUnit = false;
}
});
this.$api.publics
.queryUnitList({
projectId: project.id,
unitType: 2,
})
.then((d1) => {
this.nodes = d1.rows;
if (this.nodes.length > 0) {
this.activeName = this.nodes[0].unitId + "";
this.isUnit = true;
this.loadData();
} else {
this.$message.error(
"当前项目未分配总包单位,未登记在册人员,今日出勤数据不能维护!"
);
this.isUnit = false;
}
});
},
loadData() {
deptWroksViewData({

View File

@ -348,7 +348,7 @@ export default {
{ max: 20, message: "请输入", trigger: "blur" },
],
insuranceNumber: [
{ required: true, message: "请输入保险单编号", trigger: "blur" },
{ required: false, message: "请输入保险单编号", trigger: "blur" },
],
insuranceFile: [{ required: true, message: "请上传保险合同", trigger: "blur" }],
},

View File

@ -157,7 +157,6 @@
<script>
import { mapGetters } from "vuex";
import { unitList } from "@/api/project/projectDeptWroks";
import {
listSurProjectInsurance,
listSurProjectInsurancev2,
@ -186,7 +185,7 @@ export default {
{ max: 20, message: "请输入", trigger: "blur" },
],
insuranceNumber: [
{ required: true, message: "请输入保险单编号", trigger: "blur" },
{ required: false, message: "请输入保险单编号", trigger: "blur" },
],
insuranceFile: [{ required: true, message: "请上传保险合同", trigger: "blur" }],
},
@ -233,20 +232,22 @@ export default {
this.title = project.projectName;
this.isOpen = true;
this.queryParams.projectId = project.id;
unitList({
projectId: project.id,
unitType: 2,
}).then((d) => {
this.nodes = d.rows;
if (d.rows.length > 0) {
this.activeName = this.nodes[0].unitId + "";
this.isUnit = true;
this.getList();
} else {
this.$message.error("当前项目未分配总包单位,不能办理保险!");
this.isUnit = false;
}
});
this.$api.publics
.queryUnitList({
projectId: project.id,
unitType: 2,
})
.then((d) => {
this.nodes = d.rows;
if (d.rows.length > 0) {
this.activeName = this.nodes[0].unitId + "";
this.isUnit = true;
this.getList();
} else {
this.$message.error("当前项目未分配总包单位,不能办理保险!");
this.isUnit = false;
}
});
},
//
getList() {

View File

@ -494,17 +494,18 @@ export default {
projectId: row.projectId,
};
this.open = true;
let that = this;
//
listProjectUnit(param).then((response) => {
this.deptOptions = response.data;
});
getWorkTrain(id).then((response) => {
this.form = response.data;
that.form = response.data;
let depts = [];
this.form.workTrainDeptList.forEach((item) => {
that.form.workTrainDeptList.forEach((item) => {
depts.push(item.deptId);
});
this.form.workTrainDeptList = depts;
that.form.workTrainDeptList = depts;
if (that.form.trainFile) {
that.files = that.form.trainFile.split(",");
}

View File

@ -177,7 +177,7 @@
size="mini"
type="text"
icon="el-icon-refresh-left"
@click="handleUpdateStatus(scope.row, 3)"
@click="handleUpdateStatus(scope.row, 1)"
v-hasPermi="['work:workJournalism:edit']"
>撤回</el-button
>

View File

@ -232,13 +232,6 @@
<!-- 添加或修改演练培训对话框 -->
<el-dialog :title="title" :visible.sync="open" width="680px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="项目名称">
<el-input
placeholder="请输入项目名称"
v-model="form.projectName"
:disabled="true"
></el-input>
</el-form-item>
<el-form-item label="培训主图" prop="mainImage">
<image-upload v-model="form.mainImage" :limit="1" />
</el-form-item>
@ -494,17 +487,18 @@ export default {
projectId: row.projectId,
};
this.open = true;
let that = this;
//
listProjectUnit(param).then((response) => {
this.deptOptions = response.data;
that.deptOptions = response.data;
});
getWorkTrain(id).then((response) => {
this.form = response.data;
that.form = response.data;
let depts = [];
this.form.workTrainDeptList.forEach((item) => {
that.form.workTrainDeptList.forEach((item) => {
depts.push(item.deptId);
});
this.form.workTrainDeptList = depts;
that.form.workTrainDeptList = depts;
if (that.form.trainFile) {
that.files = that.form.trainFile.split(",");
}

View File

@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONArray;
import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.core.text.Convert;
import com.ruoyi.common.enums.DeptTypeEnum;
import com.ruoyi.common.enums.PublicStateEnum;
import com.ruoyi.common.enums.SysRoleEnum;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.QiniuBase64UploadUtil;
@ -147,7 +148,7 @@ public class PshServiceImpl implements IPshService {
String roleType = "";
if(DeptTypeEnum.JTGS.getCode().equals(deptMap.get("type_flag"))){
List<Map<String,Object>> datalist = pshMapper.queryProjectUserinfo(map);
if(datalist!=null && datalist.size()>0 && datalist.get(0)!=null && "21".equals(datalist.get(0).get("job_type"))){
if(datalist!=null && datalist.size()>0 && datalist.get(0)!=null && PublicStateEnum.USERTYPE_JFJL.getCode().equals(datalist.get(0).get("job_type"))){
//说明是甲方经理
roleType = DeptTypeEnum.JFDBTYPE.getCode();
}else{
@ -155,7 +156,7 @@ public class PshServiceImpl implements IPshService {
}
}else if(DeptTypeEnum.ZGS.getCode().equals(deptMap.get("type_flag"))){
List<Map<String,Object>> datalist = pshMapper.queryProjectUserinfo(map);
if(datalist!=null && datalist.size()>0 && datalist.get(0)!=null && "21".equals(datalist.get(0).get("job_type"))){
if(datalist!=null && datalist.size()>0 && datalist.get(0)!=null && PublicStateEnum.USERTYPE_JFJL.getCode().equals(datalist.get(0).get("job_type"))){
//说明是甲方经理
roleType = DeptTypeEnum.JFDBTYPE.getCode();
}else{

View File

@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONArray;
import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.core.text.Convert;
import com.ruoyi.common.enums.DeptTypeEnum;
import com.ruoyi.common.enums.PublicStateEnum;
import com.ruoyi.common.enums.SysRoleEnum;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.QiniuBase64UploadUtil;
@ -149,7 +150,7 @@ public class SspServiceImpl implements ISspService {
String roleType = "";
if(DeptTypeEnum.JTGS.getCode().equals(deptMap.get("type_flag"))){
List<Map<String,Object>> datalist = sspMapper.queryProjectUserinfo(map);
if(datalist!=null && datalist.size()>0 && datalist.get(0)!=null && "21".equals(datalist.get(0).get("job_type"))){
if(datalist!=null && datalist.size()>0 && datalist.get(0)!=null && PublicStateEnum.USERTYPE_JFJL.getCode().equals(datalist.get(0).get("job_type"))){
//说明是甲方经理
roleType = DeptTypeEnum.JFDBTYPE.getCode();
}else{
@ -157,7 +158,7 @@ public class SspServiceImpl implements ISspService {
}
}else if(DeptTypeEnum.ZGS.getCode().equals(deptMap.get("type_flag"))){
List<Map<String,Object>> datalist = sspMapper.queryProjectUserinfo(map);
if(datalist!=null && datalist.size()>0 && datalist.get(0)!=null && "21".equals(datalist.get(0).get("job_type"))){
if(datalist!=null && datalist.size()>0 && datalist.get(0)!=null && PublicStateEnum.USERTYPE_JFJL.getCode().equals(datalist.get(0).get("job_type"))){
//说明是甲方经理
roleType = DeptTypeEnum.JFDBTYPE.getCode();
}else{

View File

@ -0,0 +1,40 @@
package com.yanzhu.jh.bigscreen.web.controller;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.text.Convert;
import com.yanzhu.jh.project.domain.SurProjectInsurance;
import com.yanzhu.jh.project.service.ISurProjectCheckingService;
import com.yanzhu.jh.project.service.ISurProjectInsuranceService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* Conller
*/
@RestController
@RequestMapping("/bgscreen/projectChecking")
public class ProjectCheckingController {
@Autowired
private ISurProjectCheckingService surProjectCheckingService;
/**
*
* @param deptId
* @param projectId
* @return
*/
@GetMapping("/getProjectInsuranceList")
public TableDataInfo getProjectInsuranceList(String deptId, String projectId){
SurProjectInsurance surProjectInsurance = new SurProjectInsurance();
if(deptId!=null && !"0".equals(deptId)){
surProjectInsurance.setNowDept(deptId);
}
if(projectId!=null && !"0".equals(projectId)){
surProjectInsurance.setProjectId(Convert.toLong(projectId));
}
return getDataTable(surProjectInsuranceService.selectBgscreenInsuranceList(surProjectInsurance));
}
}

View File

@ -2,6 +2,10 @@ package com.yanzhu.jh.project.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.common.core.text.Convert;
import com.ruoyi.common.enums.SysRoleEnum;
import com.ruoyi.system.service.ISysDeptService;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
@ -34,6 +38,9 @@ public class SurProjectCheckingController extends BaseController
@Autowired
private ISurProjectCheckingService surProjectCheckingService;
@Autowired
private ISysDeptService sysDeptService;
/**
*
*/
@ -42,6 +49,13 @@ public class SurProjectCheckingController extends BaseController
public TableDataInfo list(SurProjectChecking surProjectChecking)
{
startPage();
surProjectChecking.setNowRole(Convert.toStr(getUserFirstRole()));
if(SysRoleEnum.ZGS.getCode().equals(surProjectChecking.getNowRole())){
surProjectChecking.setNowDept(Convert.toStr(sysDeptService.getZGSDeptId(getDeptId())));
}else{
surProjectChecking.setNowDept(Convert.toStr(getDeptId()));
}
surProjectChecking.setNowUser(Convert.toStr(getUserId()));
List<SurProjectChecking> list = surProjectCheckingService.selectSurProjectCheckingList(surProjectChecking);
return getDataTable(list);
}
@ -101,4 +115,5 @@ public class SurProjectCheckingController extends BaseController
{
return toAjax(surProjectCheckingService.deleteSurProjectCheckingByIds(ids));
}
}

View File

@ -40,9 +40,6 @@ public class SurProjectDeptWroksController extends BaseController
@Autowired
private ISurProjectDeptWroksService surProjectDeptWroksService;
@Autowired
private ISurProjectUnitInfoService surProjectUnitInfoService;
@Autowired
private ISysDeptService sysDeptService;
@ -69,20 +66,6 @@ public class SurProjectDeptWroksController extends BaseController
return getDataTable(list);
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('project:projectDeptWroks:list')")
@GetMapping("/unitList")
public TableDataInfo unitList(SurProjectUnitInfo surProjectUnitInfo)
{
surProjectUnitInfo.setNowRole(Convert.toStr(getUserFirstRole()));
if(SysRoleEnum.ZBDW.getCode().equals(surProjectUnitInfo.getNowRole())){
surProjectUnitInfo.setUnitId(getDeptId());
}
return getDataTable(surProjectUnitInfoService.selectSurProjectUnitInfoList(surProjectUnitInfo));
}
/**
*
*/

View File

@ -89,8 +89,7 @@ public class SurProjectChecking extends BaseEntity
private String groupDeptUserName;
/** 验收时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "验收时间", width = 30, dateFormat = "yyyy-MM-dd")
@Excel(name = "验收时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date checkingDate;
/** 验收附件 */
@ -101,6 +100,9 @@ public class SurProjectChecking extends BaseEntity
@Excel(name = "数据状态")
private Long isDel;
private String projectName;
private String deptName;
public void setId(Long id)
{
this.id = id;
@ -291,6 +293,22 @@ public class SurProjectChecking extends BaseEntity
return isDel;
}
public String getProjectName() {
return projectName;
}
public void setProjectName(String projectName) {
this.projectName = projectName;
}
public String getDeptName() {
return deptName;
}
public void setDeptName(String deptName) {
this.deptName = deptName;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

View File

@ -5,6 +5,8 @@ import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import java.util.List;
/**
* sur_project_unit_info
*
@ -28,8 +30,8 @@ public class SurProjectUnitInfo extends BaseEntity
private Long deptId;
/** 单位分类1 建设单位 2 设计单位 3 施工单位 4监理单位 5 监测机构) */
@Excel(name = "单位分类", readConverterExp = "1=,建=设单位,2=,设=计单位,3=,施=工单位,4=监理单位,5=,监=测机构")
/** 单位分类11 责任主体 2 总包单位 3 分包单位 4 监理单位) 具体参考数据字典sys_dept_type */
@Excel(name = "单位分类", readConverterExp = "1=,责任主体,2=,总包单位,3=,分包单位,4=监理单位")
private Long unitType;
/** 单位名称 */
@ -53,6 +55,10 @@ public class SurProjectUnitInfo extends BaseEntity
/** 删除状态0 未删除 1 已删除) */
private Long delFlag;
private String unitTypeName;
private List<SurProjectUserinfo> userinfoList;
public void setId(Long id)
{
this.id = id;
@ -150,6 +156,22 @@ public class SurProjectUnitInfo extends BaseEntity
this.deptName = deptName;
}
public String getUnitTypeName() {
return unitTypeName;
}
public void setUnitTypeName(String unitTypeName) {
this.unitTypeName = unitTypeName;
}
public List<SurProjectUserinfo> getUserinfoList() {
return userinfoList;
}
public void setUserinfoList(List<SurProjectUserinfo> userinfoList) {
this.userinfoList = userinfoList;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

View File

@ -60,6 +60,7 @@ public class SurProjectUserinfo extends BaseEntity
private Long[] projectIds;
private Long[] userIds;
private String jobTypeName;
public void setProjectName(String projectName) {
this.projectName = projectName;
@ -174,6 +175,14 @@ public class SurProjectUserinfo extends BaseEntity
this.phonenumber = phonenumber;
}
public String getJobTypeName() {
return jobTypeName;
}
public void setJobTypeName(String jobTypeName) {
this.jobTypeName = jobTypeName;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

View File

@ -1,9 +1,11 @@
package com.yanzhu.jh.project.service;
import java.util.List;
import java.util.Map;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.yanzhu.jh.project.domain.SurProject;
import com.yanzhu.jh.project.domain.SurProjectUnitInfo;
import com.yanzhu.jh.project.domain.SurProjectUserinfo;
/**
@ -30,6 +32,14 @@ public interface ISurProjectUserinfoService
*/
public List<SurProjectUserinfo> selectSurProjectUserinfoList(SurProjectUserinfo surProjectUserinfo);
/**
*
*
* @param surProjectUserinfo
* @return
*/
public List<SurProjectUnitInfo> selectProjectUnitUser(SurProjectUserinfo surProjectUserinfo);
/**
*
*

View File

@ -1,6 +1,10 @@
package com.yanzhu.jh.project.service.impl;
import java.util.Date;
import java.util.List;
import com.ruoyi.common.core.text.Convert;
import com.ruoyi.common.enums.PublicStateEnum;
import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -53,9 +57,18 @@ public class SurProjectCheckingServiceImpl implements ISurProjectCheckingService
@Override
public int insertSurProjectChecking(SurProjectChecking surProjectChecking)
{
surProjectChecking.setCheckType(PublicStateEnum.PROJECT_CHECK_TYPE_JPYS.getCode());
surProjectChecking.setWorkingPositionType(PublicStateEnum.PROJECT_CHECK_POSITION_TYPE.getCode());
if(surProjectChecking.getCheckingDate()==null){
//添加默认时间
surProjectChecking.setCheckingDate(new Date());
}
//默认第一张图是主图
surProjectChecking.setMainImage(surProjectChecking.getImageUrls().split(",")[0]);
surProjectChecking.setIsDel(Convert.toLong(PublicStateEnum.OK.getCode()));
surProjectChecking.setCreateBy(SecurityUtils.getUsername());
surProjectChecking.setCreateTime(DateUtils.getNowDate());
surProjectChecking.setIsDel(0l);
return surProjectCheckingMapper.insertSurProjectChecking(surProjectChecking);
}
@ -68,6 +81,7 @@ public class SurProjectCheckingServiceImpl implements ISurProjectCheckingService
@Override
public int updateSurProjectChecking(SurProjectChecking surProjectChecking)
{
surProjectChecking.setMainImage(surProjectChecking.getImageUrls().split(",")[0]);
surProjectChecking.setUpdateBy(SecurityUtils.getUsername());
surProjectChecking.setUpdateTime(DateUtils.getNowDate());
return surProjectCheckingMapper.updateSurProjectChecking(surProjectChecking);

View File

@ -1,7 +1,9 @@
package com.yanzhu.jh.project.service.impl;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import com.ruoyi.common.annotation.DataScope;
import com.ruoyi.common.core.domain.entity.SysDept;
@ -10,6 +12,7 @@ import com.ruoyi.common.core.text.Convert;
import com.ruoyi.common.enums.DeptTypeEnum;
import com.ruoyi.common.enums.PublicStateEnum;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.system.mapper.SysDeptMapper;
import com.ruoyi.system.mapper.SysUserMapper;
import com.yanzhu.jh.project.domain.SurProject;
@ -71,6 +74,32 @@ public class SurProjectUserinfoServiceImpl implements ISurProjectUserinfoService
return surProjectUserinfoMapper.selectSurProjectUserinfoList(surProjectUserinfo);
}
/**
*
*
* @param surProjectUserinfo
* @return
*/
public List<SurProjectUnitInfo> selectProjectUnitUser(SurProjectUserinfo surProjectUserinfo) {
SurProjectUnitInfo surProjectUnitInfo = new SurProjectUnitInfo();
surProjectUnitInfo.setProjectId(surProjectUserinfo.getProjectId());
List<SurProjectUnitInfo> projectUnitUserInfoList = surProjectUnitInfoMapper.selectSurProjectUnitInfoList(surProjectUnitInfo);
List<SurProjectUserinfo> projectUserinfoList = surProjectUserinfoMapper.selectSurProjectUserinfoList(surProjectUserinfo);
for(SurProjectUnitInfo projectUnitInfo:projectUnitUserInfoList){
List<SurProjectUserinfo> unitUserList = new ArrayList<>();
for(SurProjectUserinfo projectUserinfo:projectUserinfoList){
//同一部门组装数据
if(projectUnitInfo.getUnitId().equals(projectUserinfo.getDeptId())){
unitUserList.add(projectUserinfo);
}else if(DeptTypeEnum.ZGS.getCode().equals(projectUnitInfo.getUnitType().toString()) && PublicStateEnum.USERTYPE_JFJL.getCode().equals(projectUserinfo.getJobType())) {
unitUserList.add(projectUserinfo);
}
}
projectUnitInfo.setUserinfoList(unitUserList);
}
return projectUnitUserInfoList;
}
/**
*
*
@ -88,7 +117,7 @@ public class SurProjectUserinfoServiceImpl implements ISurProjectUserinfoService
if(DeptTypeEnum.ZGS.getCode().equals(sysDept.getTypeFlag())){
SurProject surProject = surProjectMapper.selectSurProjectById(surProjectUserinfo.getProjectId());
//选择人员职务是甲方经理时,同步到项目负责人
if("21".equals(surProjectUserinfo.getJobType())){
if(PublicStateEnum.USERTYPE_JFJL.getCode().equals(surProjectUserinfo.getJobType())){
SysUser sysUser = sysUserMapper.selectUserById(surProjectUserinfo.getUserIds()[0]);
surProject.setProjectPerson(sysUser.getNickName());
surProject.setProjectPhone(sysUser.getPhonenumber());

View File

@ -5,12 +5,20 @@ import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.text.Convert;
import com.ruoyi.common.enums.PublicStateEnum;
import com.ruoyi.common.enums.SysRoleEnum;
import com.ruoyi.system.service.ISysDeptService;
import com.ruoyi.system.service.ISysUserService;
import com.yanzhu.jh.project.domain.SurProject;
import com.yanzhu.jh.project.domain.SurProjectChecking;
import com.yanzhu.jh.project.domain.SurProjectUnitInfo;
import com.yanzhu.jh.project.domain.SurProjectUserinfo;
import com.yanzhu.jh.project.service.ISurProjectService;
import com.yanzhu.jh.project.service.ISurProjectUnitInfoService;
import com.yanzhu.jh.project.service.ISurProjectUserinfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@ -37,6 +45,12 @@ PublicsController extends BaseController {
@Autowired
private ISurProjectService surProjectService;
@Autowired
private ISurProjectUnitInfoService surProjectUnitInfoService;
@Autowired
private ISurProjectUserinfoService surProjectUserinfoService;
/**
*
*/
@ -88,4 +102,26 @@ PublicsController extends BaseController {
{
return success(deptService.selectDeptTreeList(dept));
}
/**
*
*/
@GetMapping("/queryUnitList")
public TableDataInfo queryUnitList(SurProjectUnitInfo surProjectUnitInfo)
{
surProjectUnitInfo.setNowRole(Convert.toStr(getUserFirstRole()));
if(SysRoleEnum.ZBDW.getCode().equals(surProjectUnitInfo.getNowRole())){
surProjectUnitInfo.setUnitId(getDeptId());
}
return getDataTable(surProjectUnitInfoService.selectSurProjectUnitInfoList(surProjectUnitInfo));
}
/**
*
*/
@GetMapping("/selectProjectUnitUser")
public AjaxResult selectProjectUnitUser(SurProjectUserinfo surProjectUserinfo)
{
return success(surProjectUserinfoService.selectProjectUnitUser(surProjectUserinfo));
}
}

View File

@ -49,13 +49,11 @@ public class WorkTrain extends BaseEntity
private Long trainParticipants;
/** 开始时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd")
@Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date beginDate;
/** 结束时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "结束时间", width = 30, dateFormat = "yyyy-MM-dd")
@Excel(name = "结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date endDate;
/** 删除标识 */

View File

@ -31,6 +31,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="remark" column="remark" />
<result property="projectName" column="projectName" />
<result property="deptName" column="dept_name" />
</resultMap>
<sql id="selectSurProjectCheckingVo">
@ -38,24 +40,42 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</sql>
<select id="selectSurProjectCheckingList" parameterType="SurProjectChecking" resultMap="SurProjectCheckingResult">
<include refid="selectSurProjectCheckingVo"/>
select spc.id, spc.project_id, spc.dept_id, spc.group_dept_id, spc.check_type, spc.main_image, spc.image_urls, spc.working_position_type, spc.check_working_position, spc.checking_num, spc.check_result, spc.intro, spc.quality_user, spc.quality_user_name, spc.supervise_user, spc.supervise_user_name, spc.group_dept_user, spc.group_dept_user_name, spc.checking_date, spc.checking_files, spc.is_del, spc.create_by, spc.create_time, spc.update_by, spc.update_time, spc.remark, sp.projectName, sd.dept_name from sur_project_checking spc
left join sur_project sp on spc.project_id = sp.id
left join sys_dept sd on sd.dept_id = spc.dept_id
<!--监理单位/总包公司/分包单位-->
<if test='nowRole == "5" or nowRole == "6" or nowRole == "7"'> left join sur_project_unit_info spui on spui.projectId = sp.id</if>
<!--普通用户查询项目人员-->
<if test='nowRole == "99"'> left join sur_project_userinfo spu on spu.project_id = sp.id</if>
<where>
<if test="projectId != null "> and project_id = #{projectId}</if>
<if test="deptId != null "> and dept_id = #{deptId}</if>
<if test="groupDeptId != null "> and group_dept_id = #{groupDeptId}</if>
<if test="checkType != null and checkType != ''"> and check_type = #{checkType}</if>
<if test="workingPositionType != null and workingPositionType != ''"> and working_position_type = #{workingPositionType}</if>
<if test="checkWorkingPosition != null and checkWorkingPosition != ''"> and check_working_position like concat('%', #{checkWorkingPosition}, '%')</if>
<if test="checkResult != null and checkResult != ''"> and check_result = #{checkResult}</if>
<if test="qualityUser != null and qualityUser != ''"> and quality_user like concat('%', #{qualityUser}, '%')</if>
<if test="qualityUserName != null and qualityUserName != ''"> and quality_user_name like concat('%', #{qualityUserName}, '%')</if>
<if test="superviseUser != null and superviseUser != ''"> and supervise_user like concat('%', #{superviseUser}, '%')</if>
<if test="superviseUserName != null and superviseUserName != ''"> and supervise_user_name like concat('%', #{superviseUserName}, '%')</if>
<if test="groupDeptUser != null and groupDeptUser != ''"> and group_dept_user like concat('%', #{groupDeptUser}, '%')</if>
<if test="groupDeptUserName != null and groupDeptUserName != ''"> and group_dept_user_name like concat('%', #{groupDeptUserName}, '%')</if>
<if test="params.beginCheckingDate != null and params.beginCheckingDate != '' and params.endCheckingDate != null and params.endCheckingDate != ''"> and checking_date between #{params.beginCheckingDate} and #{params.endCheckingDate}</if>
<if test="isDel != null "> and is_del = #{isDel}</if>
and is_del=0
<if test="projectId != null "> and spc.project_id = #{projectId}</if>
<if test="projectName != null and projectName != ''"> and sp.projectName like concat('%', #{projectName}, '%')</if>
<if test="deptId != null "> and spc.dept_id = #{deptId}</if>
<if test="deptName != null and deptName != ''"> and sd.dept_name like concat('%', #{deptName}, '%')</if>
<if test="groupDeptId != null "> and spc.group_dept_id = #{groupDeptId}</if>
<if test="checkType != null and checkType != ''"> and spc.check_type = #{checkType}</if>
<if test="workingPositionType != null and workingPositionType != ''"> and spc.working_position_type = #{workingPositionType}</if>
<if test="checkWorkingPosition != null and checkWorkingPosition != ''"> and spc.check_working_position like concat('%', #{checkWorkingPosition}, '%')</if>
<if test="checkResult != null and checkResult != ''"> and spc.check_result = #{checkResult}</if>
<if test="qualityUser != null and qualityUser != ''"> and (spc.quality_user like concat('%', #{qualityUser}, '%') or spc.quality_user_name like concat('%', #{qualityUser}, '%'))</if>
<if test="qualityUserName != null and qualityUserName != ''"> and spc.quality_user_name like concat('%', #{qualityUserName}, '%')</if>
<if test="superviseUser != null and superviseUser != ''"> and (spc.supervise_user like concat('%', #{superviseUser}, '%') or spc.supervise_user_name like concat('%', #{superviseUser}, '%'))</if>
<if test="superviseUserName != null and superviseUserName != ''"> and spc.supervise_user_name like concat('%', #{superviseUserName}, '%')</if>
<if test="groupDeptUser != null and groupDeptUser != ''"> and spc.group_dept_user like concat('%', #{groupDeptUser}, '%')</if>
<if test="groupDeptUserName != null and groupDeptUserName != ''"> and spc.group_dept_user_name like concat('%', #{groupDeptUserName}, '%')</if>
<if test="params.beginCheckingDate != null and params.beginCheckingDate != '' and params.endCheckingDate != null and params.endCheckingDate != ''"> and spc.checking_date between #{params.beginCheckingDate} and #{params.endCheckingDate}</if>
<if test="isDel != null "> and spc.is_del = #{isDel}</if>
<!-- 查询条件-项目部门 -->
<if test="projectDeptId != null "> and sp.deptId = #{projectDeptId}</if>
<!--子部门数据-->
<if test='nowRole == "4"'> and sp.deptId = #{nowDept}</if>
<!--监理单位/总包公司/分包单位查询当前关联数据-->
<if test='nowRole == "5" or nowRole == "6" or nowRole == "7"'> and spui.unitId = #{nowDept}</if>
<!--普通用户查询项目人员-->
<if test='nowRole == "99"'> and spu.user_id = #{nowUser} and spu.is_del=0</if>
</where>
order by checking_date desc
</select>
<select id="selectSurProjectCheckingById" parameterType="Long" resultMap="SurProjectCheckingResult">

View File

@ -10,6 +10,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="unitId" column="unitId" />
<result property="deptId" column="deptId" />
<result property="unitType" column="unitType" />
<result property="unitTypeName" column="unitTypeName" />
<result property="unitName" column="unitName" />
<result property="deptName" column="deptName" />
<result property="unitPersonName" column="unitPersonName" />
@ -24,18 +25,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</sql>
<select id="selectSurProjectUnitInfoList" parameterType="SurProjectUnitInfo" resultMap="SurProjectUnitInfoResult">
<include refid="selectSurProjectUnitInfoVo"/>
select spui.id, spui.projectId, spui.unitId, spui.unitId as deptId, spui.unitType, sdd.dict_label as unitTypeName, spui.unitName, spui.unitName as deptName, spui.unitPersonName, spui.unitPersonPhone, spui.createUser, spui.createTime, spui.del_flag from sur_project_unit_info spui
left join sys_dict_data sdd on sdd.dict_type='sys_dept_type' and dict_value=spui.unitType
<where>
and del_flag=0
<if test="projectId != null "> and projectId = #{projectId}</if>
<if test="unitId != null "> and unitId = #{unitId}</if>
<if test="unitType != null "> and unitType = #{unitType}</if>
<if test="unitName != null and unitName != ''"> and unitName like concat('%', #{unitName}, '%')</if>
<if test="unitPersonName != null and unitPersonName != ''"> and unitPersonName like concat('%', #{unitPersonName}, '%')</if>
<if test="unitPersonPhone != null and unitPersonPhone != ''"> and unitPersonPhone = #{unitPersonPhone}</if>
<if test="createUser != null and createUser != ''"> and createUser = #{createUser}</if>
<if test="createTime != null "> and createTime = #{createTime}</if>
<if test="nowDept != null and nowDept != ''"> and unitId != #{nowDept}</if>
<if test="projectId != null "> and spui.projectId = #{projectId}</if>
<if test="unitId != null "> and spui.unitId = #{unitId}</if>
<if test="unitType != null "> and spui.unitType = #{unitType}</if>
<if test="unitName != null and unitName != ''"> and spui.unitName like concat('%', #{unitName}, '%')</if>
<if test="unitPersonName != null and unitPersonName != ''"> and spui.unitPersonName like concat('%', #{unitPersonName}, '%')</if>
<if test="unitPersonPhone != null and unitPersonPhone != ''"> and spui.unitPersonPhone = #{unitPersonPhone}</if>
<if test="createUser != null and createUser != ''"> and spui.createUser = #{createUser}</if>
<if test="createTime != null "> and spui.createTime = #{createTime}</if>
<if test="nowDept != null and nowDept != ''"> and spui.unitId != #{nowDept}</if>
</where>
</select>

View File

@ -11,6 +11,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="deptName" column="dept_name" />
<result property="deptType" column="dept_type" />
<result property="jobType" column="job_type" />
<result property="jobTypeName" column="job_type_name" />
<result property="userId" column="user_id" />
<result property="isDel" column="is_del" />
<result property="createBy" column="create_by" />
@ -28,9 +29,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</sql>
<select id="selectSurProjectUserinfoList" parameterType="SurProjectUserinfo" resultMap="SurProjectUserinfoResult">
select spu.id, spu.project_id, spu.dept_id, spu.dept_name, spu.dept_type, spu.job_type, spu.user_id, spu.is_del, spu.create_by, spu.create_time, spu.update_by, spu.update_time, spu.remark, sp.projectName, su.nick_name, su.phonenumber from sur_project_userinfo spu
select spu.id, spu.project_id, spu.dept_id, spu.dept_name, spu.dept_type, spu.job_type, sdd.dict_label as job_type_name, spu.user_id, spu.is_del, spu.create_by, spu.create_time, spu.update_by, spu.update_time, spu.remark, sp.projectName, su.nick_name, su.phonenumber from sur_project_userinfo spu
left join sur_project sp on spu.project_id = sp.id
left join sys_user su on spu.user_id = su.user_id
left join sys_dict_data sdd on sdd.dict_type='sys_job_type' and spu.job_type = sdd.dict_value
<!--监理单位/总包公司/分包单位-->
<where>
and spu.is_del=0

View File

@ -129,9 +129,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select a.id, a.project_id, a.project_name, a.main_image, a.train_type, a.train_title, a.train_nature, a.train_participants, a.begin_date, a.end_date, a.train_content, a.train_file, a.is_del, a.create_by, a.create_time, a.update_by, a.update_time, a.remark,
b.train_id as sub_train_id, b.dept_id as sub_dept_id, b.is_main as sub_is_main
from work_train a
left join work_train_dept b on b.train_id = a.id
left join work_train_dept b on b.train_id = a.id and b.is_main ='N'
where a.id = #{id}
and b.is_main ='N'
</select>
<insert id="insertWorkTrain" parameterType="WorkTrain" useGeneratedKeys="true" keyProperty="id">