提交代码

dev_xds
姜玉琦 2023-08-22 18:09:42 +08:00
parent 9ac4cb4e03
commit 27db4819ba
17 changed files with 2107 additions and 380 deletions

View File

@ -16,10 +16,10 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="部门名称" prop="deptName"> <el-form-item label="单位名称" prop="deptName">
<el-input <el-input
v-model="queryParams.deptName" v-model="queryParams.deptName"
placeholder="请输入部门名称" placeholder="请输入单位名称"
clearable clearable
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
@ -40,6 +40,17 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="封样时间">
<el-date-picker
v-model="daterangeSealDate"
style="width: 240px"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</el-form-item>
<el-form-item label="指定品牌" prop="contractBrand"> <el-form-item label="指定品牌" prop="contractBrand">
<el-input <el-input
v-model="queryParams.contractBrand" v-model="queryParams.contractBrand"
@ -56,27 +67,6 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="封样时间">
<el-date-picker
v-model="daterangeSealDate"
style="width: 240px"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
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-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery" <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"
>搜索</el-button >搜索</el-button
@ -141,29 +131,92 @@
@selection-change="handleSelectionChange" @selection-change="handleSelectionChange"
> >
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="项目名称" align="center" prop="projectName" /> <el-table-column
<el-table-column label="部门名称" align="center" prop="deptName" /> label="项目名称"
<el-table-column label="封样主图" align="center" prop="mainImage" width="100"> 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"> <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> </template>
</el-table-column> </el-table-column>
<el-table-column label="图片集合" align="center" prop="imgUrls" width="100"> <el-table-column
<template slot-scope="scope"> label="封样名称"
<image-preview :src="scope.row.imgUrls" :width="50" :height="50" /> align="center"
</template> prop="materialName"
</el-table-column> width="180"
<el-table-column label="封样名称" align="center" prop="materialName" /> show-overflow-tooltip
<el-table-column label="使用部位" align="center" prop="usePosition" /> />
<el-table-column label="指定品牌" align="center" prop="contractBrand" /> <el-table-column
<el-table-column label="拟用品牌" align="center" prop="useBrand" /> label="使用部位"
align="center"
prop="usePosition"
width="150"
show-overflow-tooltip
/>
<el-table-column
label="指定品牌"
align="center"
prop="contractBrand"
width="120"
show-overflow-tooltip
/>
<el-table-column
label="拟用品牌"
align="center"
prop="useBrand"
width="120"
show-overflow-tooltip
/>
<el-table-column label="封样时间" align="center" prop="sealDate" width="180"> <el-table-column label="封样时间" align="center" prop="sealDate" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.sealDate, "{y}-{m}-{d}") }}</span> <span>{{ parseTime(scope.row.sealDate, "{y}-{m}-{d} {h}:{i}") }}</span>
</template>
</el-table-column>
<el-table-column label="会签单" align="center" prop="signFiles" width="120">
<template slot-scope="scope">
<el-button
v-if="scope.row.signFiles != null"
size="mini"
type="text"
icon="el-icon-paperclip"
@click="handledownloadSignFiles(scope.row)"
v-hasPermi="['project:materialSeal:list']"
>下载会签单</el-button
>
<span v-if="scope.row.signFiles == null"> - </span>
</template>
</el-table-column>
<el-table-column label="变更单" align="center" prop="alterationFiles" width="120">
<template slot-scope="scope">
<el-button
v-if="scope.row.alterationFiles != null"
size="mini"
type="text"
icon="el-icon-paperclip"
@click="handledownloadAlterationFiles(scope.row)"
v-hasPermi="['project:materialSeal:list']"
>下载变更单</el-button
>
<span v-if="scope.row.signFiles == null"> - </span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="会签单" align="center" prop="signFiles" />
<el-table-column label="变更单" align="center" prop="alterationFiles" />
<el-table-column label="数据状态" align="center" prop="isDel"> <el-table-column label="数据状态" align="center" prop="isDel">
<template slot-scope="scope"> <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" />
@ -206,19 +259,24 @@
/> />
<!-- 添加或修改材料封样对话框 --> <!-- 添加或修改材料封样对话框 -->
<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 ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="项目名称" prop="projectId"> <el-form-item label="项目名称" prop="projectName">
<el-input v-model="form.projectId" placeholder="请输入项目名称" /> <el-input
v-model="form.projectName"
placeholder="请输入项目名称"
:disabled="true"
/>
</el-form-item> </el-form-item>
<el-form-item label="部门名称" prop="deptId"> <el-form-item label="单位名称" prop="deptName">
<el-input v-model="form.deptId" placeholder="请输入部门名称" /> <el-input
v-model="form.deptName"
placeholder="请输入单位名称"
:disabled="true"
/>
</el-form-item> </el-form-item>
<el-form-item label="封样主图" prop="mainImage"> <el-form-item label="封样图片" prop="imageUrls">
<image-upload v-model="form.mainImage" /> <image-upload v-model="form.imageUrls" :limit="9" />
</el-form-item>
<el-form-item label="图片集合" prop="imgUrls">
<image-upload v-model="form.imgUrls" />
</el-form-item> </el-form-item>
<el-form-item label="封样名称" prop="materialName"> <el-form-item label="封样名称" prop="materialName">
<el-input v-model="form.materialName" placeholder="请输入封样名称" /> <el-input v-model="form.materialName" placeholder="请输入封样名称" />
@ -227,39 +285,46 @@
<el-input v-model="form.usePosition" placeholder="请输入使用部位" /> <el-input v-model="form.usePosition" placeholder="请输入使用部位" />
</el-form-item> </el-form-item>
<el-form-item label="指定品牌" prop="contractBrand"> <el-form-item label="指定品牌" prop="contractBrand">
<el-input v-model="form.contractBrand" placeholder="请输入指定品牌" /> <el-input
v-model="form.contractBrand"
placeholder="请输入指定品牌"
@change="onlyFile"
/>
</el-form-item> </el-form-item>
<el-form-item label="拟用品牌" prop="useBrand"> <el-form-item label="拟用品牌" prop="useBrand">
<el-input v-model="form.useBrand" placeholder="请输入拟用品牌" /> <el-input
v-model="form.useBrand"
placeholder="请输入拟用品牌"
@change="onlyFile"
/>
</el-form-item> </el-form-item>
<el-form-item label="封样时间" prop="sealDate"> <el-form-item label="封样时间" prop="sealDate">
<el-date-picker <el-date-picker
clearable clearable
v-model="form.sealDate" v-model="form.sealDate"
type="date" type="datetime"
value-format="yyyy-MM-dd" default-time="10:00:00"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择封样时间" placeholder="请选择封样时间"
style="width: 100%"
> >
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="会签单" prop="signFiles"> <el-form-item label="会签单" prop="signFiles">
<file-upload v-model="form.signFiles" /> <file-upload
v-model="form.signFiles"
:limit="1"
:fileType="['pdf', 'png', 'jpg', 'jpeg']"
@input="fileInputSign"
/>
</el-form-item> </el-form-item>
<el-form-item label="变更单" prop="alterationFiles"> <el-form-item label="变更单" prop="alterationFiles" v-show="isOnly">
<file-upload v-model="form.alterationFiles" /> <file-upload
</el-form-item> v-model="form.alterationFiles"
<el-form-item label="数据状态" prop="isDel"> :limit="1"
<el-select v-model="form.isDel" placeholder="请选择数据状态"> :fileType="['pdf', 'png', 'jpg', 'jpeg']"
<el-option @input="fileInputAlteration"
v-for="dict in dict.type.sys_common_isdel" />
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
@ -267,6 +332,7 @@
<el-button @click="cancel"> </el-button> <el-button @click="cancel"> </el-button>
</div> </div>
</el-dialog> </el-dialog>
<el-image-viewer v-if="showViewer" :on-close="closeViewer" :url-list="previewList" />
</div> </div>
</template> </template>
@ -278,12 +344,17 @@ import {
addMaterialSeal, addMaterialSeal,
updateMaterialSeal, updateMaterialSeal,
} from "@/api/project/materialSeal"; } from "@/api/project/materialSeal";
import ElImageViewer from "element-ui/packages/image/src/image-viewer";
export default { export default {
name: "MaterialSeal", name: "MaterialSeal",
components: {
ElImageViewer,
},
dicts: ["sys_common_isdel"], dicts: ["sys_common_isdel"],
data() { data() {
return { return {
showViewer: false,
// //
loading: true, loading: true,
// //
@ -312,7 +383,7 @@ export default {
projectName: null, projectName: null,
deptId: null, deptId: null,
deptName: null, deptName: null,
imgUrls: null, imageUrls: null,
materialName: null, materialName: null,
usePosition: null, usePosition: null,
contractBrand: null, contractBrand: null,
@ -323,13 +394,89 @@ export default {
// //
form: {}, form: {},
// //
rules: {}, rules: {
imageUrls: [{ required: true, message: "请上传封样现场图片", trigger: "blur" }],
materialName: [
{ required: true, message: "请输入封样名称", trigger: "blur" },
{ max: 100, message: "封样名称最多100字符", trigger: "blur" },
],
usePosition: [
{ required: true, message: "请输入使用部位", trigger: "blur" },
{ max: 100, message: "使用部位最多100字符", trigger: "blur" },
],
contractBrand: [
{ required: true, message: "请输入合同指定品牌", trigger: "blur" },
{ max: 100, message: "合同指定品牌最多100字符", trigger: "blur" },
],
useBrand: [
{ required: true, message: "请输入使用品牌", trigger: "blur" },
{ max: 100, message: "使用品牌最多100字符", trigger: "blur" },
],
sealDate: [{ required: true, message: "请选择封样时间", trigger: "blur" }],
signFiles: [{ required: true, message: "请上传会签单附件", trigger: "blur" }],
alterationFiles: [
{ required: false, message: "请上传变更单附件", trigger: "blur" },
],
},
previewList: [],
isOnly: false,
}; };
}, },
created() { created() {
this.getList(); this.getList();
}, },
methods: { methods: {
fileInputSign(files) {
let fileUrls = null;
if (files.length > 0) {
fileUrls = "";
files.forEach((item) => {
fileUrls += "," + item.url;
});
fileUrls = fileUrls.substring(1);
}
this.form.signFiles = fileUrls;
},
fileInputAlteration(files) {
let fileUrls = null;
if (files.length > 0) {
fileUrls = "";
files.forEach((item) => {
fileUrls += "," + item.url;
});
fileUrls = fileUrls.substring(1);
}
this.form.alterationFiles = fileUrls;
},
onlyFile() {
if (this.form.contractBrand && this.form.useBrand) {
if (this.form.contractBrand != this.form.useBrand) {
this.isOnly = true;
this.rules.alterationFiles[0].required = true;
} else {
this.isOnly = false;
this.form.alterationFiles = null;
this.rules.alterationFiles[0].required = false;
}
} else {
this.isOnly = false;
this.form.alterationFiles = null;
this.rules.alterationFiles[0].required = false;
}
},
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() { getList() {
this.loading = true; this.loading = true;
@ -354,9 +501,11 @@ export default {
this.form = { this.form = {
id: null, id: null,
projectId: null, projectId: null,
projectName: null,
deptId: null, deptId: null,
deptName: null,
mainImage: null, mainImage: null,
imgUrls: null, imageUrls: null,
materialName: null, materialName: null,
usePosition: null, usePosition: null,
contractBrand: null, contractBrand: null,
@ -450,6 +599,20 @@ export default {
`materialSeal_${new Date().getTime()}.xlsx` `materialSeal_${new Date().getTime()}.xlsx`
); );
}, },
/** 下载附件 */
handledownloadSignFiles(row) {
this.files = row.signFiles.split(",");
this.files.forEach((item) => {
this.$download.resource(item);
});
},
/** 下载附件 */
handledownloadAlterationFiles(row) {
this.files = row.alterationFiles.split(",");
this.files.forEach((item) => {
this.$download.resource(item);
});
},
}, },
}; };
</script> </script>

View File

@ -0,0 +1,586 @@
<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:materialSeal: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:materialSeal: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:materialSeal:remove']"
>删除</el-button
>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table
v-loading="loading"
:data="projectMaterialSealList"
@selection-change="handleSelectionChange"
>
<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="center"
prop="materialName"
width="180"
show-overflow-tooltip
/>
<el-table-column
label="使用部位"
align="center"
prop="usePosition"
width="150"
show-overflow-tooltip
/>
<el-table-column
label="指定品牌"
align="center"
prop="contractBrand"
width="120"
show-overflow-tooltip
/>
<el-table-column
label="拟用品牌"
align="center"
prop="useBrand"
width="120"
show-overflow-tooltip
/>
<el-table-column label="封样时间" align="center" prop="sealDate" width="160">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.sealDate, "{y}-{m}-{d} {h}:{i}") }}</span>
</template>
</el-table-column>
<el-table-column label="会签单" align="center" prop="signFiles" width="100">
<template slot-scope="scope">
<el-button
v-if="scope.row.signFiles != null"
size="mini"
type="text"
icon="el-icon-paperclip"
@click="handledownloadSignFiles(scope.row)"
v-hasPermi="['project:materialSeal:list']"
>下载会签单</el-button
>
<span v-if="scope.row.signFiles == null"> - </span>
</template>
</el-table-column>
<el-table-column label="变更单" align="center" prop="alterationFiles" width="100">
<template slot-scope="scope">
<el-button
v-if="scope.row.alterationFiles != null"
size="mini"
type="text"
icon="el-icon-paperclip"
@click="handledownloadAlterationFiles(scope.row)"
v-hasPermi="['project:materialSeal:list']"
>下载变更单</el-button
>
<span v-if="scope.row.signFiles == null"> - </span>
</template>
</el-table-column>
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['project:materialSeal:edit']"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['project:materialSeal: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="materialName">
<el-input v-model="form.materialName" placeholder="请输入封样名称" />
</el-form-item>
<el-form-item label="使用部位" prop="usePosition">
<el-input v-model="form.usePosition" placeholder="请输入使用部位" />
</el-form-item>
<el-form-item label="指定品牌" prop="contractBrand">
<el-input
v-model="form.contractBrand"
placeholder="请输入指定品牌"
@change="onlyFile"
/>
</el-form-item>
<el-form-item label="拟用品牌" prop="useBrand">
<el-input
v-model="form.useBrand"
placeholder="请输入拟用品牌"
@change="onlyFile"
/>
</el-form-item>
<el-form-item label="封样时间" prop="sealDate">
<el-date-picker
clearable
v-model="form.sealDate"
type="datetime"
default-time="10:00:00"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择封样时间"
style="width: 100%"
>
</el-date-picker>
</el-form-item>
<el-form-item label="会签单" prop="signFiles">
<file-upload
v-model="form.signFiles"
:limit="1"
:fileType="['pdf', 'png', 'jpg', 'jpeg']"
@input="fileInputSign"
/>
</el-form-item>
<el-form-item label="变更单" prop="alterationFiles" v-show="true">
<file-upload
v-model="form.alterationFiles"
:limit="1"
:fileType="['pdf', 'png', 'jpg', 'jpeg']"
@input="fileInputAlteration"
/>
</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 {
listMaterialSeal,
getMaterialSeal,
delMaterialSeal,
addMaterialSeal,
updateMaterialSeal,
} from "@/api/project/materialSeal";
import ElImageViewer from "element-ui/packages/image/src/image-viewer";
export default {
name: "RuoyiUiProjectDeptWroksDrawer",
components: {
ElImageViewer,
},
data() {
return {
showViewer: false,
open: false,
isOpen: false,
project: null,
title: "",
isUnit: true,
nodes: [],
form: {},
rules: {
imageUrls: [{ required: true, message: "请上传封样现场图片", trigger: "blur" }],
materialName: [
{ required: true, message: "请输入封样名称", trigger: "blur" },
{ max: 100, message: "封样名称最多100字符", trigger: "blur" },
],
usePosition: [
{ required: true, message: "请输入使用部位", trigger: "blur" },
{ max: 100, message: "使用部位最多100字符", trigger: "blur" },
],
contractBrand: [
{ required: true, message: "请输入合同指定品牌", trigger: "blur" },
{ max: 100, message: "合同指定品牌最多100字符", trigger: "blur" },
],
useBrand: [
{ required: true, message: "请输入使用品牌", trigger: "blur" },
{ max: 100, message: "使用品牌最多100字符", trigger: "blur" },
],
sealDate: [{ required: true, message: "请选择封样时间", trigger: "blur" }],
signFiles: [{ required: true, message: "请上传会签单附件", trigger: "blur" }],
alterationFiles: [
{ required: false, message: "请上传变更单附件", trigger: "blur" },
],
},
projectMaterialSealList: [],
activeName: "",
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
queryParams: {
pageNum: 1,
pageSize: 10,
projectId: null,
deptId: null,
},
previewList: [],
isOnly: false,
};
},
computed: {
...mapGetters(["dept"]),
},
mounted() {},
methods: {
fileInputSign(files) {
let fileUrls = null;
if (files.length > 0) {
fileUrls = "";
files.forEach((item) => {
fileUrls += "," + item.url;
});
fileUrls = fileUrls.substring(1);
}
this.form.signFiles = fileUrls;
},
fileInputAlteration(files) {
let fileUrls = null;
if (files.length > 0) {
fileUrls = "";
files.forEach((item) => {
fileUrls += "," + item.url;
});
fileUrls = fileUrls.substring(1);
}
this.form.alterationFiles = fileUrls;
},
onlyFile() {
if (
this.form.contractBrand &&
this.form.useBrand &&
this.form.contractBrand != this.form.useBrand
) {
console.log("qqqq");
//this.isOnly = true;
this.rules.alterationFiles[0].required = true;
} else {
console.log("qqqq22222");
//this.isOnly = false;
this.alterationFiles = null;
this.rules.alterationFiles[0].required = false;
}
},
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.projectMaterialSealList = [];
this.$message.error("当前项目未分配总包单位,不能办理材料封样!");
this.isUnit = false;
}
});
},
//
getList() {
this.queryParams.deptId = this.activeName;
this.loading = true;
listMaterialSeal(this.queryParams).then((response) => {
this.projectMaterialSealList = 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;
getMaterialSeal(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) {
updateMaterialSeal(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addMaterialSeal(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 delMaterialSeal(ids);
})
.then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
})
.catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download(
"project/materialSeal/export",
{
...this.queryParams,
},
`materialSeal_${new Date().getTime()}.xlsx`
);
},
/** 下载附件 */
handleDownload(row) {
this.files = row.checkingFiles.split(",");
this.files.forEach((item) => {
this.$download.resource(item);
});
},
/** 下载附件 */
handledownloadSignFiles(row) {
this.files = row.signFiles.split(",");
this.files.forEach((item) => {
this.$download.resource(item);
});
},
/** 下载附件 */
handledownloadAlterationFiles(row) {
this.files = row.alterationFiles.split(",");
this.files.forEach((item) => {
this.$download.resource(item);
});
},
},
};
</script>
<style lang="scss" scoped></style>

View File

@ -147,7 +147,7 @@
show-overflow-tooltip show-overflow-tooltip
/> />
<el-table-column <el-table-column
label="部门名称" label="单位名称"
align="center" align="center"
prop="deptName" prop="deptName"
width="180" width="180"
@ -557,14 +557,14 @@ export default {
this.form = response.data; this.form = response.data;
this.open = true; this.open = true;
this.title = "修改项目验收"; this.title = "修改项目验收";
this.$api.publics
.selectProjectUnitUser({
projectId: response.data.projectId,
})
.then((d) => {
this.deptUserData = d.data;
});
}); });
this.$api.publics
.selectProjectUnitUser({
projectId: row.projectId,
})
.then((d) => {
this.deptUserData = d.data;
});
}, },
/** 提交按钮 */ /** 提交按钮 */
submitForm() { submitForm() {

View File

@ -67,7 +67,11 @@
@queryTable="getList" @queryTable="getList"
></right-toolbar> ></right-toolbar>
</el-row> </el-row>
<el-table v-loading="loading" :data="projectCheckingList"> <el-table
v-loading="loading"
:data="projectCheckingList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="验收图片" align="center" prop="mainImage" width="80"> <el-table-column label="验收图片" align="center" prop="mainImage" width="80">
<template slot-scope="scope"> <template slot-scope="scope">

View File

@ -16,14 +16,53 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="部门名称" prop="deptName"> <el-form-item label="单位名称" prop="deptName">
<el-input <el-input
v-model="queryParams.deptName" v-model="queryParams.deptName"
placeholder="请输入部门名称" placeholder="请输入单位名称"
clearable clearable
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="测量类型" prop="measureType">
<el-select
v-model="queryParams.measureType"
placeholder="请选择测量类型"
clearable
>
<el-option
v-for="dict in dict.type.project_measure_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="测量结果" prop="measureResult">
<el-select
v-model="queryParams.measureResult"
placeholder="请选择测量结果"
clearable
>
<el-option
v-for="dict in dict.type.project_checking_result"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="测量时间">
<el-date-picker
v-model="daterangeMeasureTime"
style="width: 240px"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</el-form-item>
<el-form-item label="测量部位" prop="measurePosition"> <el-form-item label="测量部位" prop="measurePosition">
<el-input <el-input
v-model="queryParams.measurePosition" v-model="queryParams.measurePosition"
@ -40,29 +79,10 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="测量时间"> <el-form-item label="质量专员" prop="qualityUser">
<el-date-picker
v-model="daterangeMeasureTime"
style="width: 240px"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</el-form-item>
<el-form-item label="测量点位" prop="measurePointPosition">
<el-input <el-input
v-model="queryParams.measurePointPosition" v-model="queryParams.qualityUser"
placeholder="请输入测量点位" placeholder="请输入监理专员"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="测量结果" prop="measureResult">
<el-input
v-model="queryParams.measureResult"
placeholder="请输入测量结果"
clearable clearable
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
@ -75,14 +95,6 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="数据状态" prop="isDel">
<el-input
v-model="queryParams.isDel"
placeholder="请输入数据状态"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery" <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"
>搜索</el-button >搜索</el-button
@ -147,27 +159,65 @@
@selection-change="handleSelectionChange" @selection-change="handleSelectionChange"
> >
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="项目名称" align="center" prop="projectName" fixed="left" /> <el-table-column
<el-table-column label="部门名称" align="center" prop="deptName" /> label="项目名称"
<el-table-column label="测量主图" align="center" prop="mainImage" width="100"> align="center"
prop="projectName"
fixed="left"
width="200"
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="210">
<template slot-scope="scope"> <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> </template>
</el-table-column> </el-table-column>
<el-table-column label="图片集合" align="center" prop="imageUrls" width="100"> <el-table-column label="测量类型" align="center" prop="measureType">
<template slot-scope="scope"> <template slot-scope="scope">
<image-preview :src="scope.row.imageUrls" :width="50" :height="50" /> <dict-tag
:options="dict.type.project_measure_type"
:value="scope.row.measureType"
/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="测量类型" align="center" prop="measureType" /> <el-table-column
<el-table-column label="测量部位" align="center" prop="measurePosition" /> label="测量部位"
<el-table-column label="测量内容" align="center" prop="measureInfo" /> align="center"
<el-table-column label="测量时间" align="center" prop="measureTime" width="180"> prop="measurePosition"
width="140"
show-overflow-tooltip
/>
<el-table-column
label="测量内容"
align="center"
prop="measureInfo"
width="150"
show-overflow-tooltip
/>
<el-table-column label="测量时间" align="center" prop="measureTime" width="160">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.measureTime, "{y}-{m}-{d}") }}</span> <span>{{ parseTime(scope.row.measureTime, "{y}-{m}-{d} {h}:{i}") }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="测量点位" align="center" prop="measurePointPosition" /> <el-table-column
label="测量点位"
align="center"
prop="measurePointPosition"
width="100"
show-overflow-tooltip
/>
<el-table-column label="测量结果" align="center" prop="measureResult"> <el-table-column label="测量结果" align="center" prop="measureResult">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag <dict-tag
@ -176,20 +226,53 @@
/> />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="测量文件" align="center" prop="measureFiles" /> <el-table-column
<el-table-column label="质量专员" align="center" prop="qualityUser" /> label="质量专员"
<el-table-column label="质量专员名称" align="center" prop="qualityUserName" /> align="left"
<el-table-column label="监理专员" align="center" prop="superviseUser" /> prop="qualityUser"
<el-table-column label="监理专员名称" align="center" prop="superviseUserName" /> width="120"
<el-table-column label="数据状态" align="center" prop="isDel" /> 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="isDel">
<template slot-scope="scope">
<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" prop="remark" />
<el-table-column <el-table-column
label="操作" label="操作"
align="center" align="center"
class-name="small-padding fixed-width" class-name="small-padding fixed-width"
fixed="right" fixed="right"
width="130"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<el-button
v-if="scope.row.measureFiles != null"
size="mini"
type="text"
icon="el-icon-paperclip"
@click="handledownload(scope.row)"
v-hasPermi="['project:projectMeasure:list']"
>下载附件</el-button
>
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
@ -219,19 +302,38 @@
/> />
<!-- 添加或修改实测实量对话框 --> <!-- 添加或修改实测实量对话框 -->
<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 ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="项目名称" prop="projectId"> <el-form-item label="项目名称" prop="projectName">
<el-input v-model="form.projectId" placeholder="请输入项目名称" /> <el-input
v-model="form.projectName"
placeholder="请输入项目名称"
:disabled="true"
/>
</el-form-item> </el-form-item>
<el-form-item label="部门名称" prop="deptId"> <el-form-item label="单位名称" prop="deptName">
<el-input v-model="form.deptId" placeholder="请输入部门名称" /> <el-input
v-model="form.deptName"
placeholder="请输入单位名称"
:disabled="true"
/>
</el-form-item> </el-form-item>
<el-form-item label="测量主图" prop="mainImage"> <el-form-item label="测量" prop="imageUrls">
<image-upload v-model="form.mainImage" /> <image-upload v-model="form.imageUrls" :limit="9" />
</el-form-item> </el-form-item>
<el-form-item label="图片集合" prop="imageUrls"> <el-form-item label="测量类型" prop="measureType">
<image-upload v-model="form.imageUrls" /> <el-select
v-model="form.measureType"
placeholder="请选择测量类型"
style="width: 100%"
>
<el-option
v-for="dict in dict.type.project_measure_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="测量部位" prop="measurePosition"> <el-form-item label="测量部位" prop="measurePosition">
<el-input v-model="form.measurePosition" placeholder="请输入测量部位" /> <el-input v-model="form.measurePosition" placeholder="请输入测量部位" />
@ -239,42 +341,80 @@
<el-form-item label="测量内容" prop="measureInfo"> <el-form-item label="测量内容" prop="measureInfo">
<el-input v-model="form.measureInfo" placeholder="请输入测量内容" /> <el-input v-model="form.measureInfo" placeholder="请输入测量内容" />
</el-form-item> </el-form-item>
<el-form-item label="测量点位" prop="measurePointPosition">
<el-input v-model="form.measurePointPosition" placeholder="请输入测量点位" />
</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="measureTime"> <el-form-item label="测量时间" prop="measureTime">
<el-date-picker <el-date-picker
clearable clearable
v-model="form.measureTime" v-model="form.measureTime"
type="date" type="datetime"
value-format="yyyy-MM-dd" default-time="10:00:00"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择测量时间" placeholder="请选择测量时间"
style="width: 100%"
> >
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="测量点位" prop="measurePointPosition">
<el-input v-model="form.measurePointPosition" placeholder="请输入测量点位" />
</el-form-item>
<el-form-item label="测量结果" prop="measureResult"> <el-form-item label="测量结果" prop="measureResult">
<el-input v-model="form.measureResult" placeholder="请输入测量结果" /> <el-radio
v-model="form.measureResult"
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>
<el-form-item label="测量文件" prop="measureFiles"> <el-form-item label="测量附件" prop="measureFiles" v-if="false">
<file-upload v-model="form.measureFiles" /> <file-upload v-model="form.measureFiles" :limit="1" @input="fileInput" />
</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="isDel">
<el-input v-model="form.isDel" placeholder="请输入数据状态" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
@ -282,6 +422,7 @@
<el-button @click="cancel"> </el-button> <el-button @click="cancel"> </el-button>
</div> </div>
</el-dialog> </el-dialog>
<el-image-viewer v-if="showViewer" :on-close="closeViewer" :url-list="previewList" />
</div> </div>
</template> </template>
@ -293,11 +434,17 @@ import {
addProjectMeasure, addProjectMeasure,
updateProjectMeasure, updateProjectMeasure,
} from "@/api/project/projectMeasure"; } from "@/api/project/projectMeasure";
import ElImageViewer from "element-ui/packages/image/src/image-viewer";
export default { export default {
name: "ProjectMeasure", name: "ProjectMeasure",
components: {
ElImageViewer,
},
dicts: ["project_measure_type", "project_checking_result", "sys_common_isdel"],
data() { data() {
return { return {
showViewer: false,
// //
loading: true, loading: true,
// //
@ -332,19 +479,66 @@ export default {
measureTime: null, measureTime: null,
measurePointPosition: null, measurePointPosition: null,
measureResult: null, measureResult: null,
qualityUser: null,
superviseUser: null, superviseUser: null,
isDel: null, isDel: null,
}, },
// //
form: {}, form: {},
// //
rules: {}, rules: {
imageUrls: [{ required: true, message: "请上传测量图片", trigger: "blur" }],
measureType: [{ required: true, message: "请选择测量类型", trigger: "blur" }],
measurePosition: [
{ required: true, message: "请输入测量部位", trigger: "blur" },
{ max: 100, message: "测量部位最多100字符", trigger: "blur" },
],
measureInfo: [
{ required: true, message: "请输入测量内容", trigger: "blur" },
{ max: 100, message: "测量内容最多100字符", trigger: "blur" },
],
measurePointPosition: [
{ required: true, message: "请输入测量点位", trigger: "blur" },
{ max: 100, message: "测量点位最多100字符", trigger: "blur" },
],
qualityUser: [{ required: true, message: "请选择质量专员", trigger: "blur" }],
superviseUser: [{ required: true, message: "请选择监理专员", trigger: "blur" }],
measureTime: [{ required: true, message: "请选择测量时间", trigger: "blur" }],
measureResult: [{ required: true, message: "请选择测量结果", trigger: "blur" }],
measureFiles: [{ required: false, message: "请上传测量附件", trigger: "blur" }],
},
deptUserData: [],
previewList: [],
}; };
}, },
created() { created() {
this.getList(); this.getList();
}, },
methods: { methods: {
fileInput(files) {
let fileUrls = null;
if (files.length > 0) {
fileUrls = "";
files.forEach((item) => {
fileUrls += "," + item.url;
});
fileUrls = fileUrls.substring(1);
}
this.form.measureFiles = fileUrls;
},
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() { getList() {
this.loading = true; this.loading = true;
@ -369,7 +563,9 @@ export default {
this.form = { this.form = {
id: null, id: null,
projectId: null, projectId: null,
projectName: null,
deptId: null, deptId: null,
deptName: null,
mainImage: null, mainImage: null,
imageUrls: null, imageUrls: null,
measureType: null, measureType: null,
@ -424,6 +620,13 @@ export default {
this.open = true; this.open = true;
this.title = "修改实测实量"; this.title = "修改实测实量";
}); });
this.$api.publics
.selectProjectUnitUser({
projectId: row.projectId,
})
.then((d) => {
this.deptUserData = d.data;
});
}, },
/** 提交按钮 */ /** 提交按钮 */
submitForm() { submitForm() {
@ -469,6 +672,33 @@ export default {
`projectMeasure_${new Date().getTime()}.xlsx` `projectMeasure_${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.measureFiles.split(",");
this.files.forEach((item) => {
this.$download.resource(item);
});
},
}, },
}; };
</script> </script>

View File

@ -0,0 +1,631 @@
<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:projectMeasure: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:projectMeasure: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:projectMeasure:remove']"
>删除</el-button
>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table
v-loading="loading"
:data="projectMeasureList"
@selection-change="handleSelectionChange"
>
<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="center" prop="measureType">
<template slot-scope="scope">
<dict-tag
:options="dict.type.project_measure_type"
:value="scope.row.measureType"
/>
</template>
</el-table-column>
<el-table-column
label="测量部位"
align="center"
prop="measurePosition"
width="120"
show-overflow-tooltip
/>
<el-table-column
label="测量内容"
align="center"
prop="measureInfo"
width="140"
show-overflow-tooltip
/>
<el-table-column label="测量时间" align="center" prop="measureTime" width="160">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.measureTime, "{y}-{m}-{d} {h}:{i}") }}</span>
</template>
</el-table-column>
<el-table-column
label="测量点位"
align="center"
prop="measurePointPosition"
show-overflow-tooltip
/>
<el-table-column label="测量结果" align="center" prop="measureResult">
<template slot-scope="scope">
<dict-tag
:options="dict.type.project_checking_result"
:value="scope.row.measureResult"
/>
</template>
</el-table-column>
<el-table-column
label="质量专员"
align="center"
prop="qualityUser"
width="100"
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="100"
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"
class-name="small-padding fixed-width"
width="120"
>
<template slot-scope="scope">
<el-button
v-if="scope.row.measureFiles != null"
size="mini"
type="text"
icon="el-icon-paperclip"
@click="handledownload(scope.row)"
v-hasPermi="['project:projectMeasure:list']"
>下载附件</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['project:projectMeasure:edit']"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['project:projectMeasure: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="measureType">
<el-select
v-model="form.measureType"
placeholder="请选择测量类型"
style="width: 100%"
>
<el-option
v-for="dict in dict.type.project_measure_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="测量部位" prop="measurePosition">
<el-input v-model="form.measurePosition" placeholder="请输入测量部位" />
</el-form-item>
<el-form-item label="测量内容" prop="measureInfo">
<el-input v-model="form.measureInfo" placeholder="请输入测量内容" />
</el-form-item>
<el-form-item label="测量点位" prop="measurePointPosition">
<el-input v-model="form.measurePointPosition" placeholder="请输入测量点位" />
</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="measureTime">
<el-date-picker
clearable
v-model="form.measureTime"
type="datetime"
default-time="10:00:00"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择测量时间"
style="width: 100%"
>
</el-date-picker>
</el-form-item>
<el-form-item label="测量结果" prop="measureResult">
<el-radio
v-model="form.measureResult"
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="measureFiles" v-if="false">
<file-upload v-model="form.measureFiles" :limit="1" @input="fileInput" />
</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 {
listProjectMeasure,
getProjectMeasure,
delProjectMeasure,
addProjectMeasure,
updateProjectMeasure,
} from "@/api/project/projectMeasure";
import ElImageViewer from "element-ui/packages/image/src/image-viewer";
export default {
name: "RuoyiUiProjectDeptWroksDrawer",
components: {
ElImageViewer,
},
dicts: ["project_measure_type", "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" }],
measureType: [{ required: true, message: "请选择测量类型", trigger: "blur" }],
measurePosition: [
{ required: true, message: "请输入测量部位", trigger: "blur" },
{ max: 100, message: "测量部位最多100字符", trigger: "blur" },
],
measureInfo: [
{ required: true, message: "请输入测量内容", trigger: "blur" },
{ max: 100, message: "测量内容最多100字符", trigger: "blur" },
],
measurePointPosition: [
{ required: true, message: "请输入测量点位", trigger: "blur" },
{ max: 100, message: "测量点位最多100字符", trigger: "blur" },
],
qualityUser: [{ required: true, message: "请选择质量专员", trigger: "blur" }],
superviseUser: [{ required: true, message: "请选择监理专员", trigger: "blur" }],
measureTime: [{ required: true, message: "请选择测量时间", trigger: "blur" }],
measureResult: [{ required: true, message: "请选择测量结果", trigger: "blur" }],
measureFiles: [{ required: false, message: "请上传测量附件", trigger: "blur" }],
},
projectMeasureList: [],
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: {
fileInput(files) {
let fileUrls = null;
if (files.length > 0) {
fileUrls = "";
files.forEach((item) => {
fileUrls += "," + item.url;
});
fileUrls = fileUrls.substring(1);
}
this.form.measureFiles = fileUrls;
},
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,
unitTypes: "2,4".split(","),
})
.then((d) => {
this.nodes = d.rows;
if (d.rows.length > 0) {
this.activeName = this.nodes[0].unitId + "";
this.isUnit = true;
this.getList();
} else {
this.projectMeasureList = [];
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;
listProjectMeasure(this.queryParams).then((response) => {
this.projectMeasureList = 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;
getProjectMeasure(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) {
updateProjectMeasure(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addProjectMeasure(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 delProjectMeasure(ids);
})
.then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
})
.catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download(
"project/projectMeasure/export",
{
...this.queryParams,
},
`ProjectMeasure_${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.measureFiles.split(",");
this.files.forEach((item) => {
this.$download.resource(item);
});
},
},
};
</script>
<style lang="scss" scoped></style>

View File

@ -369,6 +369,8 @@
'work:emergencyDrill:list', 'work:emergencyDrill:list',
'project:surProjectInsurance:list', 'project:surProjectInsurance:list',
'project:surProjectSpecial:list', 'project:surProjectSpecial:list',
'project:projectMeasure:list',
'project:materialSeal:list',
'project:projectDeptWroks:list', 'project:projectDeptWroks:list',
'project:surProjectAttendance:add', 'project:surProjectAttendance:add',
'project:surProject:remove', 'project:surProject:remove',
@ -420,6 +422,18 @@
v-hasPermi="['project:surProjectSpecial:list']" v-hasPermi="['project:surProjectSpecial:list']"
>项目特种人员</el-dropdown-item >项目特种人员</el-dropdown-item
> >
<el-dropdown-item
command="handleProjectMeasure"
icon="el-icon-s-operation"
v-hasPermi="['project:projectMeasure:list']"
>实时测量管理</el-dropdown-item
>
<el-dropdown-item
command="handleProjectMaterialSeal"
icon="el-icon-s-ticket"
v-hasPermi="['project:materialSeal:list']"
>材料封样管理</el-dropdown-item
>
<el-dropdown-item <el-dropdown-item
command="handleProjectDeptWroks" command="handleProjectDeptWroks"
icon="el-icon-s-custom" icon="el-icon-s-custom"
@ -432,7 +446,6 @@
v-hasPermi="['project:surProjectAttendance:add']" v-hasPermi="['project:surProjectAttendance:add']"
>今日出勤</el-dropdown-item >今日出勤</el-dropdown-item
> >
<el-dropdown-item <el-dropdown-item
command="handleDelete" command="handleDelete"
icon="el-icon-delete" icon="el-icon-delete"
@ -764,6 +777,8 @@
<projectDeptWroksDrawer ref="deptWroksDrawer"></projectDeptWroksDrawer> <projectDeptWroksDrawer ref="deptWroksDrawer"></projectDeptWroksDrawer>
<insuranceDrawer ref="insurance"></insuranceDrawer> <insuranceDrawer ref="insurance"></insuranceDrawer>
<projectCheckingDrawer ref="projectChecking"></projectCheckingDrawer> <projectCheckingDrawer ref="projectChecking"></projectCheckingDrawer>
<materialSealDrawer ref="materialSeal"></materialSealDrawer>
<projectMeasureDrawer ref="projectMeasure"></projectMeasureDrawer>
</div> </div>
</template> </template>
@ -789,6 +804,8 @@ import attendanceDrawer from "../surProjectAttendance/attendanceDrawer.vue";
import projectDeptWroksDrawer from "../projectDeptWroks/projectDeptWroksDrawer.vue"; import projectDeptWroksDrawer from "../projectDeptWroks/projectDeptWroksDrawer.vue";
import insuranceDrawer from "../surProjectInsurance/insuranceDrawer.vue"; import insuranceDrawer from "../surProjectInsurance/insuranceDrawer.vue";
import projectCheckingDrawer from "../projectChecking/projectCheckingDrawer.vue"; import projectCheckingDrawer from "../projectChecking/projectCheckingDrawer.vue";
import materialSealDrawer from "../materialSeal/projectMaterialSealDrawer.vue";
import projectMeasureDrawer from "../projectMeasure/projectMeasureDrawer.vue";
import { checkPermi, checkRole } from "@/utils/permission"; // import { checkPermi, checkRole } from "@/utils/permission"; //
export default { export default {
@ -806,6 +823,8 @@ export default {
projectDeptWroksDrawer, projectDeptWroksDrawer,
insuranceDrawer, insuranceDrawer,
projectCheckingDrawer, projectCheckingDrawer,
materialSealDrawer,
projectMeasureDrawer,
}, },
dicts: [ dicts: [
"sys_check_state", "sys_check_state",
@ -1046,6 +1065,12 @@ export default {
case "handleProjectChecking": case "handleProjectChecking":
this.$refs.projectChecking.show(row); this.$refs.projectChecking.show(row);
break; break;
case "handleProjectMeasure":
this.$refs.projectMeasure.show(row);
break;
case "handleProjectMaterialSeal":
this.$refs.materialSeal.show(row);
break;
default: default:
break; break;
} }

View File

@ -39,7 +39,11 @@
@queryTable="getList" @queryTable="getList"
></right-toolbar> ></right-toolbar>
</el-row> </el-row>
<el-table v-loading="loading" :data="surProjectInsuranceList"> <el-table
v-loading="loading"
:data="surProjectInsuranceList"
@selection-change="handleSelectionChange"
>
<el-table-column label="保险类型" align="center" prop="insuranceTypeName" /> <el-table-column label="保险类型" align="center" prop="insuranceTypeName" />
<el-table-column label="保险状态" align="center" prop="insuranceState"> <el-table-column label="保险状态" align="center" prop="insuranceState">
<template slot-scope="scope"> <template slot-scope="scope">

View File

@ -1,71 +1,123 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-drawer v-bind="$attrs" v-if="onOpen" v-on="$listeners" @opened="onOpen" @close="onClose" style="padding-left: 20px;"> <el-drawer
<el-row :gutter="10" class="mb8" style="margin-left: 25px; margin-top:10px;margin-right:0px;"> v-bind="$attrs"
<el-col :span="1.5"> v-if="onOpen"
<el-button v-on="$listeners"
type="primary" @opened="onOpen"
plain @close="onClose"
icon="el-icon-plus" style="padding-left: 20px"
size="mini" >
@click="handleAdd" <el-row
v-hasPermi="['project:surProjectUserInfo:add']" :gutter="10"
>添加</el-button> class="mb8"
</el-col> style="margin-left: 25px; margin-top: 10px; margin-right: 0px"
<el-col :span="1.5"> >
<el-button <el-col :span="1.5">
type="danger" <el-button
plain type="primary"
icon="el-icon-delete" plain
size="mini" icon="el-icon-plus"
:disabled="multiple" size="mini"
@click="handleDelete" @click="handleAdd"
v-hasPermi="['project:surProjectUserInfo:remove']" v-hasPermi="['project:surProjectUserInfo:add']"
>删除</el-button> >添加</el-button
>
</el-col> </el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <el-col :span="1.5">
</el-row> <el-button
<el-table v-loading="loading" :data="surProjectUserInfoList" @selection-change="handleSelectionChange"> type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['project:surProjectUserInfo:remove']"
>删除</el-button
>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table
v-loading="loading"
:data="surProjectUserInfoList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="单位名称" prop="deptName" align="left" show-overflow-tooltip/> <el-table-column
label="单位名称"
prop="deptName"
align="left"
show-overflow-tooltip
/>
<el-table-column label="单位类型" align="center" prop="deptType"> <el-table-column label="单位类型" align="center" prop="deptType">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :options="dict.type.sys_dept_type" :value="scope.row.deptType"/> <dict-tag :options="dict.type.sys_dept_type" :value="scope.row.deptType" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="职务类型" align="center" prop="jobType"> <el-table-column label="职务类型" align="center" prop="jobType">
<template slot-scope="scope"> <template slot-scope="scope">
<el-select v-model="scope.row.jobType" placeholder="请选择职务类型" @change="changeJobType(scope.row,$event)"> <el-select
<el-option v-model="scope.row.jobType"
v-for="item in dict.type.sys_job_type" placeholder="请选择职务类型"
:key="item.value" @change="changeJobType(scope.row, $event)"
:label="item.label" >
:value="item.value" <el-option
> v-for="item in dict.type.sys_job_type"
</el-option> :key="item.value"
</el-select> :label="item.label"
</template> :value="item.value"
>
</el-option>
</el-select>
</template>
</el-table-column> </el-table-column>
<el-table-column label="人员名称" align="center" prop="nickName" /> <el-table-column label="人员名称" align="center" prop="nickName" />
<el-table-column label="联系电话" align="center" prop="phonenumber" /> <el-table-column label="联系电话" align="center" prop="phonenumber" />
</el-table> </el-table>
<pagination <pagination
v-show="total>0" v-show="total > 0"
:total="total" :total="total"
:page.sync="queryParams.pageNum" :page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize" :limit.sync="queryParams.pageSize"
@pagination="getList" @pagination="getList"
/> />
<el-dialog :title="title" v-if="open" :visible.sync="open" width="680px" append-to-body :close-on-click-modal="false" :close-on-press-escape="false"> <el-dialog
:title="title"
v-if="open"
:visible.sync="open"
width="680px"
append-to-body
:close-on-click-modal="false"
:close-on-press-escape="false"
>
<el-form ref="form" :model="form" :rules="rules" label-width="120px"> <el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form-item label="项目名称"> <el-form-item label="项目名称">
<el-input placeholder="请输入项目名称" v-model="form.projectName" :disabled="true"></el-input> <el-input
placeholder="请输入项目名称"
v-model="form.projectName"
:disabled="true"
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="所属单位" prop="deptId"> <el-form-item label="所属单位" prop="deptId">
<treeselect v-model="form.deptId" :options="deptOptions" :show-count="true" placeholder="请选择所属单位" @select="deptChange"/> <treeselect
v-model="form.deptId"
:options="deptOptions"
:show-count="true"
placeholder="请选择所属单位"
@select="deptChange"
/>
</el-form-item> </el-form-item>
<el-form-item label="职务类型" prop="jobType"> <el-form-item label="职务类型" prop="jobType">
<el-select v-model="form.jobType" filterable placeholder="请选择职务类型" style="width: 100%;"> <el-select
v-model="form.jobType"
filterable
placeholder="请选择职务类型"
style="width: 100%"
>
<el-option <el-option
v-for="dict in dict.type.sys_job_type" v-for="dict in dict.type.sys_job_type"
:key="dict.value" :key="dict.value"
@ -75,12 +127,20 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="项目人员" prop="userIds"> <el-form-item label="项目人员" prop="userIds">
<el-select v-model="form.userIds" filterable multiple clearable placeholder="请选择项目人员" style="width: 100%;"> <el-select
v-model="form.userIds"
filterable
multiple
clearable
placeholder="请选择项目人员"
style="width: 100%"
>
<el-option <el-option
v-for="item in userOptions" v-for="item in userOptions"
:key="item.userId" :key="item.userId"
:label="item.nickName" :label="item.nickName"
:value="item.userId"> :value="item.userId"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -93,112 +153,106 @@
<el-button @click="cancel"> </el-button> <el-button @click="cancel"> </el-button>
</div> </div>
</el-dialog> </el-dialog>
</el-drawer> </el-drawer>
</div> </div>
</template> </template>
<script> <script>
import { listSurProjectUserInfo, delSurProjectUserInfo, addSurProjectUserInfo, updateSurProjectUserInfo, findUserByDeptId } from "@/api/project/surProjectUserInfo"; import {
import Treeselect from "@riophae/vue-treeselect"; listSurProjectUserInfo,
import "@riophae/vue-treeselect/dist/vue-treeselect.css"; delSurProjectUserInfo,
addSurProjectUserInfo,
updateSurProjectUserInfo,
findUserByDeptId,
} from "@/api/project/surProjectUserInfo";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
export default { export default {
components: {Treeselect}, components: { Treeselect },
props: { props: {
formData: { formData: {
projectId: String, projectId: String,
projectName: String projectName: String,
}
}, },
dicts: ['sys_dept_type','sys_job_type'], },
data() { dicts: ["sys_dept_type", "sys_job_type"],
return { data() {
// return {
loading: true, //
// loading: true,
ids: [], //
// ids: [],
total: 0, //
// total: 0,
surProjectUserInfoList: [], //
// surProjectUserInfoList: [],
single: true, //
// single: true,
multiple: true, //
// multiple: true,
showSearch: true, //
// showSearch: true,
open: false, //
// open: false,
title: "", //
userIds: [], title: "",
userOptions: [], userIds: [],
// userOptions: [],
deptOptions: [], //
// deptOptions: [],
deptName: null, //
// deptName: null,
queryParams: { //
pageNum: 1, queryParams: {
pageSize: 20, pageNum: 1,
projectId: null pageSize: 20,
}, projectId: null,
// },
form: {}, //
// form: {},
rules: { //
deptId: [ rules: {
{ required: true, message: "请选择所属单位", trigger: "blur" } deptId: [{ required: true, message: "请选择所属单位", trigger: "blur" }],
], jobType: [{ required: true, message: "请选择职务类型", trigger: "blur" }],
jobType: [ userIds: [{ required: true, message: "请选择项目人员", trigger: "blur" }],
{ required: true, message: "请选择职务类型", trigger: "blur" } },
], };
userIds: [ },
{ required: true, message: "请选择项目人员", trigger: "blur" } computed: {},
] watch: {
} formData: {
handler(value) {
this.formData = value;
},
immediate: true,
},
},
created() {},
mounted() {},
beforeDestroy() {},
methods: {
onOpen() {
this.getList();
},
onClose() {},
/** 查询项目人员列表 */
getList() {
if (this.formData.projectId) {
this.loading = true;
this.queryParams.projectId = this.formData.projectId;
listSurProjectUserInfo(this.queryParams).then((response) => {
this.surProjectUserInfoList = response.rows;
this.total = response.total;
this.loading = false;
});
} }
}, },
computed: {},
watch: {
formData: {
handler(value) {
this.formData = value
},
immediate: true
}
},
created() {
},
mounted() {
},
beforeDestroy() {
},
methods: {
onOpen() {
this.getList();
},
onClose() {},
/** 查询项目人员列表 */
getList() {
if(this.formData.projectId){
this.loading = true;
this.queryParams.projectId = this.formData.projectId;
listSurProjectUserInfo(this.queryParams).then(response => {
this.surProjectUserInfoList = response.rows;
this.total = response.total;
this.loading = false;
});
}
},
// //
handleSelectionChange(selection) { handleSelectionChange(selection) {
this.ids = selection.map(item => item.id) this.ids = selection.map((item) => item.id);
this.single = selection.length!==1 this.single = selection.length !== 1;
this.multiple = !selection.length this.multiple = !selection.length;
}, },
// //
reset() { reset() {
@ -215,18 +269,18 @@
createTime: null, createTime: null,
updateBy: null, updateBy: null,
updateTime: null, updateTime: null,
remark: null remark: null,
}; };
this.userIds= []; this.userIds = [];
this.userOptions=[]; this.userOptions = [];
this.resetForm("form"); this.resetForm("form");
}, },
/** 新增按钮操作 */ /** 新增按钮操作 */
handleAdd() { handleAdd() {
this.reset(); this.reset();
this.getDeptTree(); this.getDeptTree();
this.form.projectId=this.formData.projectId; this.form.projectId = this.formData.projectId;
this.form.projectName=this.formData.projectName; this.form.projectName = this.formData.projectName;
this.open = true; this.open = true;
this.title = "添加项目人员"; this.title = "添加项目人员";
}, },
@ -238,16 +292,16 @@
// //
getDeptTree() { getDeptTree() {
// //
this.$api.publics.getDeptTree().then(response => { this.$api.publics.getDeptTree().then((response) => {
this.deptOptions = response.data; this.deptOptions = response.data;
}) });
}, },
// //
deptChange(note){ deptChange(note) {
this.userIds=[]; this.userIds = [];
this.userOptions=[]; this.userOptions = [];
this.form.userIds=[]; this.form.userIds = [];
if(note&&note.id){ if (note && note.id) {
this.form.deptId = note.id; this.form.deptId = note.id;
this.getUserList(note.id); this.getUserList(note.id);
} }
@ -256,27 +310,27 @@
getUserList(id) { getUserList(id) {
this.loading = true; this.loading = true;
let param = { let param = {
id:this.form.projectId, id: this.form.projectId,
deptId: this.form.deptId deptId: this.form.deptId,
} };
// //
findUserByDeptId(param).then(response => { findUserByDeptId(param).then((response) => {
this.loading = false; this.loading = false;
this.userOptions = response.rows this.userOptions = response.rows;
}) });
}, },
/** 提交按钮 */ /** 提交按钮 */
submitForm() { submitForm() {
this.$refs["form"].validate(valid => { this.$refs["form"].validate((valid) => {
if (valid) { if (valid) {
if (this.form.id != null) { if (this.form.id != null) {
updateSurProjectUserInfo(this.form).then(response => { updateSurProjectUserInfo(this.form).then((response) => {
this.$modal.msgSuccess("修改成功"); this.$modal.msgSuccess("修改成功");
this.open = false; this.open = false;
this.getList(); this.getList();
}); });
} else { } else {
addSurProjectUserInfo(this.form).then(response => { addSurProjectUserInfo(this.form).then((response) => {
this.$modal.msgSuccess("添加成功"); this.$modal.msgSuccess("添加成功");
this.open = false; this.open = false;
this.getList(); this.getList();
@ -286,36 +340,40 @@
}); });
}, },
// //
changeJobType(row,val){ changeJobType(row, val) {
this.form.id = row.id; this.form.id = row.id;
this.form.jobType = val; this.form.jobType = val;
updateSurProjectUserInfo(this.form).then(response => { updateSurProjectUserInfo(this.form).then((response) => {
this.$modal.msgSuccess("修改成功"); this.$modal.msgSuccess("修改成功");
this.getList(); this.getList();
}); });
}, },
/** 删除按钮操作 */ /** 删除按钮操作 */
handleDelete(row) { handleDelete(row) {
const ids = row.id || this.ids; const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除项目人员编号为"' + ids + '"的数据项?').then(function() { this.$modal
return delSurProjectUserInfo(ids); .confirm('是否确认删除项目人员编号为"' + ids + '"的数据项?')
}).then(() => { .then(function () {
this.getList(); return delSurProjectUserInfo(ids);
this.$modal.msgSuccess("删除成功"); })
}).catch(() => {}); .then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
})
.catch(() => {});
}, },
} },
} };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '@/styles/mixin.scss'; @import "@/styles/mixin.scss";
::v-deep .el-drawer__header { ::v-deep .el-drawer__header {
display: none; display: none;
} }
@include action-bar; @include action-bar;
.json-editor{ .json-editor {
height: calc(100vh - 33px); height: calc(100vh - 33px);
} }
</style> </style>

View File

@ -61,7 +61,7 @@ spring:
servlet: servlet:
multipart: multipart:
# 单个文件大小 # 单个文件大小
max-file-size: 500MB max-file-size: 100MB
# 设置总上传的文件大小 # 设置总上传的文件大小
max-request-size: 500MB max-request-size: 500MB
# 服务模块 # 服务模块

View File

@ -34,7 +34,7 @@ public class SurProjectMaterialSeal extends BaseEntity
/** 图片集合 */ /** 图片集合 */
@Excel(name = "图片集合") @Excel(name = "图片集合")
private String imgUrls; private String imageUrls;
/** 封样名称 */ /** 封样名称 */
@Excel(name = "封样名称") @Excel(name = "封样名称")
@ -108,14 +108,14 @@ public class SurProjectMaterialSeal extends BaseEntity
{ {
return mainImage; return mainImage;
} }
public void setImgUrls(String imgUrls) public void setImageUrls(String imageUrls)
{ {
this.imgUrls = imgUrls; this.imageUrls = imageUrls;
} }
public String getImgUrls() public String getImageUrls()
{ {
return imgUrls; return imageUrls;
} }
public void setMaterialName(String materialName) public void setMaterialName(String materialName)
{ {
@ -213,7 +213,7 @@ public class SurProjectMaterialSeal extends BaseEntity
.append("projectId", getProjectId()) .append("projectId", getProjectId())
.append("deptId", getDeptId()) .append("deptId", getDeptId())
.append("mainImage", getMainImage()) .append("mainImage", getMainImage())
.append("imgUrls", getImgUrls()) .append("imageUrls", getImageUrls())
.append("materialName", getMaterialName()) .append("materialName", getMaterialName())
.append("usePosition", getUsePosition()) .append("usePosition", getUsePosition())
.append("contractBrand", getContractBrand()) .append("contractBrand", getContractBrand())

View File

@ -55,6 +55,8 @@ public class SurProjectUnitInfo extends BaseEntity
/** 删除状态0 未删除 1 已删除) */ /** 删除状态0 未删除 1 已删除) */
private Long delFlag; private Long delFlag;
private List<Long> unitTypes;
private String unitTypeName; private String unitTypeName;
private List<SurProjectUserinfo> userinfoList; private List<SurProjectUserinfo> userinfoList;
@ -172,6 +174,14 @@ public class SurProjectUnitInfo extends BaseEntity
this.userinfoList = userinfoList; this.userinfoList = userinfoList;
} }
public List<Long> getUnitTypes() {
return unitTypes;
}
public void setUnitTypes(List<Long> unitTypes) {
this.unitTypes = unitTypes;
}
@Override @Override
public String toString() { public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

View File

@ -1,6 +1,8 @@
package com.yanzhu.jh.project.service.impl; package com.yanzhu.jh.project.service.impl;
import java.util.List; import java.util.List;
import com.ruoyi.common.enums.PublicStateEnum;
import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -53,6 +55,8 @@ public class SurProjectMaterialSealServiceImpl implements ISurProjectMaterialSea
@Override @Override
public int insertSurProjectMaterialSeal(SurProjectMaterialSeal surProjectMaterialSeal) public int insertSurProjectMaterialSeal(SurProjectMaterialSeal surProjectMaterialSeal)
{ {
surProjectMaterialSeal.setIsDel(PublicStateEnum.OK.getCode());
surProjectMaterialSeal.setMainImage(surProjectMaterialSeal.getImageUrls().split(",")[0]);
surProjectMaterialSeal.setCreateBy(SecurityUtils.getUsername()); surProjectMaterialSeal.setCreateBy(SecurityUtils.getUsername());
surProjectMaterialSeal.setCreateTime(DateUtils.getNowDate()); surProjectMaterialSeal.setCreateTime(DateUtils.getNowDate());
return surProjectMaterialSealMapper.insertSurProjectMaterialSeal(surProjectMaterialSeal); return surProjectMaterialSealMapper.insertSurProjectMaterialSeal(surProjectMaterialSeal);
@ -67,6 +71,7 @@ public class SurProjectMaterialSealServiceImpl implements ISurProjectMaterialSea
@Override @Override
public int updateSurProjectMaterialSeal(SurProjectMaterialSeal surProjectMaterialSeal) public int updateSurProjectMaterialSeal(SurProjectMaterialSeal surProjectMaterialSeal)
{ {
surProjectMaterialSeal.setMainImage(surProjectMaterialSeal.getImageUrls().split(",")[0]);
surProjectMaterialSeal.setUpdateBy(SecurityUtils.getUsername()); surProjectMaterialSeal.setUpdateBy(SecurityUtils.getUsername());
surProjectMaterialSeal.setUpdateTime(DateUtils.getNowDate()); surProjectMaterialSeal.setUpdateTime(DateUtils.getNowDate());
return surProjectMaterialSealMapper.updateSurProjectMaterialSeal(surProjectMaterialSeal); return surProjectMaterialSealMapper.updateSurProjectMaterialSeal(surProjectMaterialSeal);

View File

@ -1,6 +1,8 @@
package com.yanzhu.jh.project.service.impl; package com.yanzhu.jh.project.service.impl;
import java.util.List; import java.util.List;
import com.ruoyi.common.enums.PublicStateEnum;
import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -53,6 +55,8 @@ public class SurProjectMeasureServiceImpl implements ISurProjectMeasureService
@Override @Override
public int insertSurProjectMeasure(SurProjectMeasure surProjectMeasure) public int insertSurProjectMeasure(SurProjectMeasure surProjectMeasure)
{ {
surProjectMeasure.setMainImage(surProjectMeasure.getImageUrls().split(",")[0]);
surProjectMeasure.setIsDel(PublicStateEnum.OK.getCode());
surProjectMeasure.setCreateBy(SecurityUtils.getUsername()); surProjectMeasure.setCreateBy(SecurityUtils.getUsername());
surProjectMeasure.setCreateTime(DateUtils.getNowDate()); surProjectMeasure.setCreateTime(DateUtils.getNowDate());
return surProjectMeasureMapper.insertSurProjectMeasure(surProjectMeasure); return surProjectMeasureMapper.insertSurProjectMeasure(surProjectMeasure);
@ -67,6 +71,7 @@ public class SurProjectMeasureServiceImpl implements ISurProjectMeasureService
@Override @Override
public int updateSurProjectMeasure(SurProjectMeasure surProjectMeasure) public int updateSurProjectMeasure(SurProjectMeasure surProjectMeasure)
{ {
surProjectMeasure.setMainImage(surProjectMeasure.getImageUrls().split(",")[0]);
surProjectMeasure.setUpdateBy(SecurityUtils.getUsername()); surProjectMeasure.setUpdateBy(SecurityUtils.getUsername());
surProjectMeasure.setUpdateTime(DateUtils.getNowDate()); surProjectMeasure.setUpdateTime(DateUtils.getNowDate());
return surProjectMeasureMapper.updateSurProjectMeasure(surProjectMeasure); return surProjectMeasureMapper.updateSurProjectMeasure(surProjectMeasure);

View File

@ -11,7 +11,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="deptId" column="dept_id" /> <result property="deptId" column="dept_id" />
<result property="deptName" column="dept_name" /> <result property="deptName" column="dept_name" />
<result property="mainImage" column="main_image" /> <result property="mainImage" column="main_image" />
<result property="imgUrls" column="img_urls" /> <result property="imageUrls" column="image_urls" />
<result property="materialName" column="material_name" /> <result property="materialName" column="material_name" />
<result property="usePosition" column="use_position" /> <result property="usePosition" column="use_position" />
<result property="contractBrand" column="contract_brand" /> <result property="contractBrand" column="contract_brand" />
@ -28,7 +28,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap> </resultMap>
<sql id="selectSurProjectMaterialSealVo"> <sql id="selectSurProjectMaterialSealVo">
select spme.id, spme.project_id, spme.dept_id, spme.main_image, spme.img_urls, spme.material_name, spme.use_position, spme.contract_brand, spme.use_brand, spme.seal_date, spme.sign_files, spme.alteration_files, spme.is_del, spme.create_by, spme.create_time, spme.update_by, spme.update_time, spme.remark, sp.projectName, sd.dept_name from sur_project_material_seal spme select spme.id, spme.project_id, spme.dept_id, spme.main_image, spme.image_urls, spme.material_name, spme.use_position, spme.contract_brand, spme.use_brand, spme.seal_date, spme.sign_files, spme.alteration_files, spme.is_del, spme.create_by, spme.create_time, spme.update_by, spme.update_time, spme.remark, sp.projectName, sd.dept_name from sur_project_material_seal spme
left join sur_project sp on spme.project_id = sp.id left join sur_project sp on spme.project_id = sp.id
left join sys_dept sd on sd.dept_id = spme.dept_id left join sys_dept sd on sd.dept_id = spme.dept_id
</sql> </sql>
@ -43,7 +43,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and spme.is_del='0' and spme.is_del='0'
<if test="projectId != null "> and spme.project_id = #{projectId}</if> <if test="projectId != null "> and spme.project_id = #{projectId}</if>
<if test="deptId != null "> and spme.dept_id = #{deptId}</if> <if test="deptId != null "> and spme.dept_id = #{deptId}</if>
<if test="imgUrls != null and imgUrls != ''"> and spme.img_urls = #{imgUrls}</if> <if test="imageUrls != null and imageUrls != ''"> and spme.image_urls = #{imageUrls}</if>
<if test="materialName != null and materialName != ''"> and spme.material_name like concat('%', #{materialName}, '%')</if> <if test="materialName != null and materialName != ''"> and spme.material_name like concat('%', #{materialName}, '%')</if>
<if test="usePosition != null and usePosition != ''"> and spme.use_position like concat('%', #{usePosition}, '%')</if> <if test="usePosition != null and usePosition != ''"> and spme.use_position like concat('%', #{usePosition}, '%')</if>
<if test="contractBrand != null and contractBrand != ''"> and spme.contract_brand like concat('%', #{contractBrand}, '%')</if> <if test="contractBrand != null and contractBrand != ''"> and spme.contract_brand like concat('%', #{contractBrand}, '%')</if>
@ -63,7 +63,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectSurProjectMaterialSealById" parameterType="Long" resultMap="SurProjectMaterialSealResult"> <select id="selectSurProjectMaterialSealById" parameterType="Long" resultMap="SurProjectMaterialSealResult">
<include refid="selectSurProjectMaterialSealVo"/> <include refid="selectSurProjectMaterialSealVo"/>
where id = #{id} where spme.id = #{id}
</select> </select>
<insert id="insertSurProjectMaterialSeal" parameterType="SurProjectMaterialSeal" useGeneratedKeys="true" keyProperty="id"> <insert id="insertSurProjectMaterialSeal" parameterType="SurProjectMaterialSeal" useGeneratedKeys="true" keyProperty="id">
@ -72,7 +72,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="projectId != null">project_id,</if> <if test="projectId != null">project_id,</if>
<if test="deptId != null">dept_id,</if> <if test="deptId != null">dept_id,</if>
<if test="mainImage != null">main_image,</if> <if test="mainImage != null">main_image,</if>
<if test="imgUrls != null">img_urls,</if> <if test="imageUrls != null">image_urls,</if>
<if test="materialName != null">material_name,</if> <if test="materialName != null">material_name,</if>
<if test="usePosition != null">use_position,</if> <if test="usePosition != null">use_position,</if>
<if test="contractBrand != null">contract_brand,</if> <if test="contractBrand != null">contract_brand,</if>
@ -91,7 +91,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="projectId != null">#{projectId},</if> <if test="projectId != null">#{projectId},</if>
<if test="deptId != null">#{deptId},</if> <if test="deptId != null">#{deptId},</if>
<if test="mainImage != null">#{mainImage},</if> <if test="mainImage != null">#{mainImage},</if>
<if test="imgUrls != null">#{imgUrls},</if> <if test="imageUrls != null">#{imageUrls},</if>
<if test="materialName != null">#{materialName},</if> <if test="materialName != null">#{materialName},</if>
<if test="usePosition != null">#{usePosition},</if> <if test="usePosition != null">#{usePosition},</if>
<if test="contractBrand != null">#{contractBrand},</if> <if test="contractBrand != null">#{contractBrand},</if>
@ -114,7 +114,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="projectId != null">project_id = #{projectId},</if> <if test="projectId != null">project_id = #{projectId},</if>
<if test="deptId != null">dept_id = #{deptId},</if> <if test="deptId != null">dept_id = #{deptId},</if>
<if test="mainImage != null">main_image = #{mainImage},</if> <if test="mainImage != null">main_image = #{mainImage},</if>
<if test="imgUrls != null">img_urls = #{imgUrls},</if> <if test="imageUrls != null">image_urls = #{imageUrls},</if>
<if test="materialName != null">material_name = #{materialName},</if> <if test="materialName != null">material_name = #{materialName},</if>
<if test="usePosition != null">use_position = #{usePosition},</if> <if test="usePosition != null">use_position = #{usePosition},</if>
<if test="contractBrand != null">contract_brand = #{contractBrand},</if> <if test="contractBrand != null">contract_brand = #{contractBrand},</if>

View File

@ -32,7 +32,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap> </resultMap>
<sql id="selectSurProjectMeasureVo"> <sql id="selectSurProjectMeasureVo">
select spm.id, spm.project_id, spm.dept_id, spm.main_image, spm.image_urls, spm.measure_type, spm.measure_position, spm.measure_info, spm.measure_time, spm.measure_point_position, spm.measure_result, spm.measure_files, spm.quality_user, spm.quality_user_name, spm.supervise_user, spm.supervise_user_name, spm.is_del, spm.create_by, spm.create_time, spm.update_by, spm.update_time, spm.remark, sp.prijectName, sd.dept_name from sur_project_measure spm select spm.id, spm.project_id, spm.dept_id, spm.main_image, spm.image_urls, spm.measure_type, spm.measure_position, spm.measure_info, spm.measure_time, spm.measure_point_position, spm.measure_result, spm.measure_files, spm.quality_user, spm.quality_user_name, spm.supervise_user, spm.supervise_user_name, spm.is_del, spm.create_by, spm.create_time, spm.update_by, spm.update_time, spm.remark, sp.projectName, sd.dept_name from sur_project_measure spm
left join sur_project sp on spm.project_id = sp.id left join sur_project sp on spm.project_id = sp.id
left join sys_dept sd on sd.dept_id = spm.dept_id left join sys_dept sd on sd.dept_id = spm.dept_id
</sql> </sql>

View File

@ -38,6 +38,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="createUser != null and createUser != ''"> and spui.createUser = #{createUser}</if> <if test="createUser != null and createUser != ''"> and spui.createUser = #{createUser}</if>
<if test="createTime != null "> and spui.createTime = #{createTime}</if> <if test="createTime != null "> and spui.createTime = #{createTime}</if>
<if test="nowDept != null and nowDept != ''"> and spui.unitId != #{nowDept}</if> <if test="nowDept != null and nowDept != ''"> and spui.unitId != #{nowDept}</if>
<if test="unitTypes != null ">
and spui.unitType in
<foreach item="type" collection="unitTypes" open="(" separator="," close=")">
#{type}
</foreach>
</if>
</where> </where>
</select> </select>