提交代码
parent
9ac4cb4e03
commit
27db4819ba
|
@ -16,10 +16,10 @@
|
|||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="部门名称" prop="deptName">
|
||||
<el-form-item label="单位名称" prop="deptName">
|
||||
<el-input
|
||||
v-model="queryParams.deptName"
|
||||
placeholder="请输入部门名称"
|
||||
placeholder="请输入单位名称"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
|
@ -40,6 +40,17 @@
|
|||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</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-input
|
||||
v-model="queryParams.contractBrand"
|
||||
|
@ -56,27 +67,6 @@
|
|||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</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-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"
|
||||
>搜索</el-button
|
||||
|
@ -141,29 +131,92 @@
|
|||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="项目名称" align="center" prop="projectName" />
|
||||
<el-table-column label="部门名称" align="center" prop="deptName" />
|
||||
<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="imgUrls" width="100">
|
||||
<template slot-scope="scope">
|
||||
<image-preview :src="scope.row.imgUrls" :width="50" :height="50" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="封样名称" align="center" prop="materialName" />
|
||||
<el-table-column label="使用部位" align="center" prop="usePosition" />
|
||||
<el-table-column label="指定品牌" align="center" prop="contractBrand" />
|
||||
<el-table-column label="拟用品牌" align="center" prop="useBrand" />
|
||||
<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="180">
|
||||
<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>
|
||||
</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">
|
||||
<template slot-scope="scope">
|
||||
<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-item label="项目名称" prop="projectId">
|
||||
<el-input v-model="form.projectId" placeholder="请输入项目名称" />
|
||||
<el-form-item label="项目名称" prop="projectName">
|
||||
<el-input
|
||||
v-model="form.projectName"
|
||||
placeholder="请输入项目名称"
|
||||
:disabled="true"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="部门名称" prop="deptId">
|
||||
<el-input v-model="form.deptId" placeholder="请输入部门名称" />
|
||||
<el-form-item label="单位名称" prop="deptName">
|
||||
<el-input
|
||||
v-model="form.deptName"
|
||||
placeholder="请输入单位名称"
|
||||
:disabled="true"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="封样主图" prop="mainImage">
|
||||
<image-upload v-model="form.mainImage" />
|
||||
</el-form-item>
|
||||
<el-form-item label="图片集合" prop="imgUrls">
|
||||
<image-upload v-model="form.imgUrls" />
|
||||
<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="请输入封样名称" />
|
||||
|
@ -227,39 +285,46 @@
|
|||
<el-input v-model="form.usePosition" placeholder="请输入使用部位" />
|
||||
</el-form-item>
|
||||
<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 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 label="封样时间" prop="sealDate">
|
||||
<el-date-picker
|
||||
clearable
|
||||
v-model="form.sealDate"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
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" />
|
||||
<file-upload
|
||||
v-model="form.signFiles"
|
||||
:limit="1"
|
||||
:fileType="['pdf', 'png', 'jpg', 'jpeg']"
|
||||
@input="fileInputSign"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="变更单" prop="alterationFiles">
|
||||
<file-upload v-model="form.alterationFiles" />
|
||||
</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="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 label="变更单" prop="alterationFiles" v-show="isOnly">
|
||||
<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">
|
||||
|
@ -267,6 +332,7 @@
|
|||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<el-image-viewer v-if="showViewer" :on-close="closeViewer" :url-list="previewList" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@ -278,12 +344,17 @@ import {
|
|||
addMaterialSeal,
|
||||
updateMaterialSeal,
|
||||
} from "@/api/project/materialSeal";
|
||||
import ElImageViewer from "element-ui/packages/image/src/image-viewer";
|
||||
|
||||
export default {
|
||||
name: "MaterialSeal",
|
||||
components: {
|
||||
ElImageViewer,
|
||||
},
|
||||
dicts: ["sys_common_isdel"],
|
||||
data() {
|
||||
return {
|
||||
showViewer: false,
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 选中数组
|
||||
|
@ -312,7 +383,7 @@ export default {
|
|||
projectName: null,
|
||||
deptId: null,
|
||||
deptName: null,
|
||||
imgUrls: null,
|
||||
imageUrls: null,
|
||||
materialName: null,
|
||||
usePosition: null,
|
||||
contractBrand: null,
|
||||
|
@ -323,13 +394,89 @@ export default {
|
|||
// 表单参数
|
||||
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() {
|
||||
this.getList();
|
||||
},
|
||||
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() {
|
||||
this.loading = true;
|
||||
|
@ -354,9 +501,11 @@ export default {
|
|||
this.form = {
|
||||
id: null,
|
||||
projectId: null,
|
||||
projectName: null,
|
||||
deptId: null,
|
||||
deptName: null,
|
||||
mainImage: null,
|
||||
imgUrls: null,
|
||||
imageUrls: null,
|
||||
materialName: null,
|
||||
usePosition: null,
|
||||
contractBrand: null,
|
||||
|
@ -450,6 +599,20 @@ export default {
|
|||
`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>
|
||||
|
|
|
@ -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>
|
|
@ -147,7 +147,7 @@
|
|||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
label="部门名称"
|
||||
label="单位名称"
|
||||
align="center"
|
||||
prop="deptName"
|
||||
width="180"
|
||||
|
@ -557,14 +557,14 @@ export default {
|
|||
this.form = response.data;
|
||||
this.open = true;
|
||||
this.title = "修改项目验收";
|
||||
});
|
||||
this.$api.publics
|
||||
.selectProjectUnitUser({
|
||||
projectId: response.data.projectId,
|
||||
projectId: row.projectId,
|
||||
})
|
||||
.then((d) => {
|
||||
this.deptUserData = d.data;
|
||||
});
|
||||
});
|
||||
},
|
||||
/** 提交按钮 */
|
||||
submitForm() {
|
||||
|
|
|
@ -67,7 +67,11 @@
|
|||
@queryTable="getList"
|
||||
></right-toolbar>
|
||||
</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 label="验收图片" align="center" prop="mainImage" width="80">
|
||||
<template slot-scope="scope">
|
||||
|
|
|
@ -16,14 +16,53 @@
|
|||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="部门名称" prop="deptName">
|
||||
<el-form-item label="单位名称" prop="deptName">
|
||||
<el-input
|
||||
v-model="queryParams.deptName"
|
||||
placeholder="请输入部门名称"
|
||||
placeholder="请输入单位名称"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</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-input
|
||||
v-model="queryParams.measurePosition"
|
||||
|
@ -40,29 +79,10 @@
|
|||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</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="measurePointPosition">
|
||||
<el-form-item label="质量专员" prop="qualityUser">
|
||||
<el-input
|
||||
v-model="queryParams.measurePointPosition"
|
||||
placeholder="请输入测量点位"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="测量结果" prop="measureResult">
|
||||
<el-input
|
||||
v-model="queryParams.measureResult"
|
||||
placeholder="请输入测量结果"
|
||||
v-model="queryParams.qualityUser"
|
||||
placeholder="请输入监理专员"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
|
@ -75,14 +95,6 @@
|
|||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</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-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"
|
||||
>搜索</el-button
|
||||
|
@ -147,27 +159,65 @@
|
|||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="项目名称" align="center" prop="projectName" fixed="left" />
|
||||
<el-table-column label="部门名称" align="center" prop="deptName" />
|
||||
<el-table-column label="测量主图" align="center" prop="mainImage" width="100">
|
||||
<el-table-column
|
||||
label="项目名称"
|
||||
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">
|
||||
<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="imageUrls" width="100">
|
||||
<el-table-column label="测量类型" align="center" prop="measureType">
|
||||
<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>
|
||||
</el-table-column>
|
||||
<el-table-column label="测量类型" align="center" prop="measureType" />
|
||||
<el-table-column label="测量部位" align="center" prop="measurePosition" />
|
||||
<el-table-column label="测量内容" align="center" prop="measureInfo" />
|
||||
<el-table-column label="测量时间" align="center" prop="measureTime" width="180">
|
||||
<el-table-column
|
||||
label="测量部位"
|
||||
align="center"
|
||||
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">
|
||||
<span>{{ parseTime(scope.row.measureTime, "{y}-{m}-{d}") }}</span>
|
||||
<span>{{ parseTime(scope.row.measureTime, "{y}-{m}-{d} {h}:{i}") }}</span>
|
||||
</template>
|
||||
</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">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag
|
||||
|
@ -176,20 +226,53 @@
|
|||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="测量文件" align="center" prop="measureFiles" />
|
||||
<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="isDel" />
|
||||
<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="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"
|
||||
class-name="small-padding fixed-width"
|
||||
fixed="right"
|
||||
width="130"
|
||||
>
|
||||
<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"
|
||||
|
@ -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-item label="项目名称" prop="projectId">
|
||||
<el-input v-model="form.projectId" placeholder="请输入项目名称" />
|
||||
<el-form-item label="项目名称" prop="projectName">
|
||||
<el-input
|
||||
v-model="form.projectName"
|
||||
placeholder="请输入项目名称"
|
||||
:disabled="true"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="部门名称" prop="deptId">
|
||||
<el-input v-model="form.deptId" placeholder="请输入部门名称" />
|
||||
<el-form-item label="单位名称" prop="deptName">
|
||||
<el-input
|
||||
v-model="form.deptName"
|
||||
placeholder="请输入单位名称"
|
||||
:disabled="true"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="测量主图" prop="mainImage">
|
||||
<image-upload v-model="form.mainImage" />
|
||||
<el-form-item label="测量图片" prop="imageUrls">
|
||||
<image-upload v-model="form.imageUrls" :limit="9" />
|
||||
</el-form-item>
|
||||
<el-form-item label="图片集合" prop="imageUrls">
|
||||
<image-upload v-model="form.imageUrls" />
|
||||
<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="请输入测量部位" />
|
||||
|
@ -239,42 +341,80 @@
|
|||
<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="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
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="measurePointPosition">
|
||||
<el-input v-model="form.measurePointPosition" placeholder="请输入测量点位" />
|
||||
</el-form-item>
|
||||
<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 label="测量文件" prop="measureFiles">
|
||||
<file-upload v-model="form.measureFiles" />
|
||||
</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 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">
|
||||
|
@ -282,6 +422,7 @@
|
|||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<el-image-viewer v-if="showViewer" :on-close="closeViewer" :url-list="previewList" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@ -293,11 +434,17 @@ import {
|
|||
addProjectMeasure,
|
||||
updateProjectMeasure,
|
||||
} from "@/api/project/projectMeasure";
|
||||
import ElImageViewer from "element-ui/packages/image/src/image-viewer";
|
||||
|
||||
export default {
|
||||
name: "ProjectMeasure",
|
||||
components: {
|
||||
ElImageViewer,
|
||||
},
|
||||
dicts: ["project_measure_type", "project_checking_result", "sys_common_isdel"],
|
||||
data() {
|
||||
return {
|
||||
showViewer: false,
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 选中数组
|
||||
|
@ -332,19 +479,66 @@ export default {
|
|||
measureTime: null,
|
||||
measurePointPosition: null,
|
||||
measureResult: null,
|
||||
qualityUser: null,
|
||||
superviseUser: null,
|
||||
isDel: null,
|
||||
},
|
||||
// 表单参数
|
||||
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() {
|
||||
this.getList();
|
||||
},
|
||||
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() {
|
||||
this.loading = true;
|
||||
|
@ -369,7 +563,9 @@ export default {
|
|||
this.form = {
|
||||
id: null,
|
||||
projectId: null,
|
||||
projectName: null,
|
||||
deptId: null,
|
||||
deptName: null,
|
||||
mainImage: null,
|
||||
imageUrls: null,
|
||||
measureType: null,
|
||||
|
@ -424,6 +620,13 @@ export default {
|
|||
this.open = true;
|
||||
this.title = "修改实测实量";
|
||||
});
|
||||
this.$api.publics
|
||||
.selectProjectUnitUser({
|
||||
projectId: row.projectId,
|
||||
})
|
||||
.then((d) => {
|
||||
this.deptUserData = d.data;
|
||||
});
|
||||
},
|
||||
/** 提交按钮 */
|
||||
submitForm() {
|
||||
|
@ -469,6 +672,33 @@ export default {
|
|||
`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>
|
||||
|
|
|
@ -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>
|
|
@ -369,6 +369,8 @@
|
|||
'work:emergencyDrill:list',
|
||||
'project:surProjectInsurance:list',
|
||||
'project:surProjectSpecial:list',
|
||||
'project:projectMeasure:list',
|
||||
'project:materialSeal:list',
|
||||
'project:projectDeptWroks:list',
|
||||
'project:surProjectAttendance:add',
|
||||
'project:surProject:remove',
|
||||
|
@ -420,6 +422,18 @@
|
|||
v-hasPermi="['project:surProjectSpecial:list']"
|
||||
>项目特种人员</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
|
||||
command="handleProjectDeptWroks"
|
||||
icon="el-icon-s-custom"
|
||||
|
@ -432,7 +446,6 @@
|
|||
v-hasPermi="['project:surProjectAttendance:add']"
|
||||
>今日出勤</el-dropdown-item
|
||||
>
|
||||
|
||||
<el-dropdown-item
|
||||
command="handleDelete"
|
||||
icon="el-icon-delete"
|
||||
|
@ -764,6 +777,8 @@
|
|||
<projectDeptWroksDrawer ref="deptWroksDrawer"></projectDeptWroksDrawer>
|
||||
<insuranceDrawer ref="insurance"></insuranceDrawer>
|
||||
<projectCheckingDrawer ref="projectChecking"></projectCheckingDrawer>
|
||||
<materialSealDrawer ref="materialSeal"></materialSealDrawer>
|
||||
<projectMeasureDrawer ref="projectMeasure"></projectMeasureDrawer>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@ -789,6 +804,8 @@ 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 materialSealDrawer from "../materialSeal/projectMaterialSealDrawer.vue";
|
||||
import projectMeasureDrawer from "../projectMeasure/projectMeasureDrawer.vue";
|
||||
import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
|
||||
|
||||
export default {
|
||||
|
@ -806,6 +823,8 @@ export default {
|
|||
projectDeptWroksDrawer,
|
||||
insuranceDrawer,
|
||||
projectCheckingDrawer,
|
||||
materialSealDrawer,
|
||||
projectMeasureDrawer,
|
||||
},
|
||||
dicts: [
|
||||
"sys_check_state",
|
||||
|
@ -1046,6 +1065,12 @@ export default {
|
|||
case "handleProjectChecking":
|
||||
this.$refs.projectChecking.show(row);
|
||||
break;
|
||||
case "handleProjectMeasure":
|
||||
this.$refs.projectMeasure.show(row);
|
||||
break;
|
||||
case "handleProjectMaterialSeal":
|
||||
this.$refs.materialSeal.show(row);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -39,7 +39,11 @@
|
|||
@queryTable="getList"
|
||||
></right-toolbar>
|
||||
</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="insuranceState">
|
||||
<template slot-scope="scope">
|
||||
|
|
|
@ -1,7 +1,18 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<el-drawer v-bind="$attrs" v-if="onOpen" v-on="$listeners" @opened="onOpen" @close="onClose" style="padding-left: 20px;">
|
||||
<el-row :gutter="10" class="mb8" style="margin-left: 25px; margin-top:10px;margin-right:0px;">
|
||||
<el-drawer
|
||||
v-bind="$attrs"
|
||||
v-if="onOpen"
|
||||
v-on="$listeners"
|
||||
@opened="onOpen"
|
||||
@close="onClose"
|
||||
style="padding-left: 20px"
|
||||
>
|
||||
<el-row
|
||||
:gutter="10"
|
||||
class="mb8"
|
||||
style="margin-left: 25px; margin-top: 10px; margin-right: 0px"
|
||||
>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="primary"
|
||||
|
@ -10,7 +21,8 @@
|
|||
size="mini"
|
||||
@click="handleAdd"
|
||||
v-hasPermi="['project:surProjectUserInfo:add']"
|
||||
>添加</el-button>
|
||||
>添加</el-button
|
||||
>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
|
@ -21,21 +33,38 @@
|
|||
:disabled="multiple"
|
||||
@click="handleDelete"
|
||||
v-hasPermi="['project:surProjectUserInfo:remove']"
|
||||
>删除</el-button>
|
||||
>删除</el-button
|
||||
>
|
||||
</el-col>
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||
<right-toolbar
|
||||
:showSearch.sync="showSearch"
|
||||
@queryTable="getList"
|
||||
></right-toolbar>
|
||||
</el-row>
|
||||
<el-table v-loading="loading" :data="surProjectUserInfoList" @selection-change="handleSelectionChange">
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
:data="surProjectUserInfoList"
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<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">
|
||||
<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>
|
||||
</el-table-column>
|
||||
<el-table-column label="职务类型" align="center" prop="jobType">
|
||||
<template slot-scope="scope">
|
||||
<el-select v-model="scope.row.jobType" placeholder="请选择职务类型" @change="changeJobType(scope.row,$event)">
|
||||
<el-select
|
||||
v-model="scope.row.jobType"
|
||||
placeholder="请选择职务类型"
|
||||
@change="changeJobType(scope.row, $event)"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in dict.type.sys_job_type"
|
||||
:key="item.value"
|
||||
|
@ -50,22 +79,45 @@
|
|||
<el-table-column label="联系电话" align="center" prop="phonenumber" />
|
||||
</el-table>
|
||||
<pagination
|
||||
v-show="total>0"
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
:page.sync="queryParams.pageNum"
|
||||
:limit.sync="queryParams.pageSize"
|
||||
@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-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 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 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
|
||||
v-for="dict in dict.type.sys_job_type"
|
||||
:key="dict.value"
|
||||
|
@ -75,12 +127,20 @@
|
|||
</el-select>
|
||||
</el-form-item>
|
||||
<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
|
||||
v-for="item in userOptions"
|
||||
:key="item.userId"
|
||||
:label="item.nickName"
|
||||
:value="item.userId">
|
||||
:value="item.userId"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
@ -95,22 +155,28 @@
|
|||
</el-dialog>
|
||||
</el-drawer>
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { listSurProjectUserInfo, delSurProjectUserInfo, addSurProjectUserInfo, updateSurProjectUserInfo, findUserByDeptId } from "@/api/project/surProjectUserInfo";
|
||||
import Treeselect from "@riophae/vue-treeselect";
|
||||
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
|
||||
<script>
|
||||
import {
|
||||
listSurProjectUserInfo,
|
||||
delSurProjectUserInfo,
|
||||
addSurProjectUserInfo,
|
||||
updateSurProjectUserInfo,
|
||||
findUserByDeptId,
|
||||
} from "@/api/project/surProjectUserInfo";
|
||||
import Treeselect from "@riophae/vue-treeselect";
|
||||
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
|
||||
|
||||
export default {
|
||||
components: {Treeselect},
|
||||
export default {
|
||||
components: { Treeselect },
|
||||
props: {
|
||||
formData: {
|
||||
projectId: String,
|
||||
projectName: String
|
||||
}
|
||||
projectName: String,
|
||||
},
|
||||
dicts: ['sys_dept_type','sys_job_type'],
|
||||
},
|
||||
dicts: ["sys_dept_type", "sys_job_type"],
|
||||
data() {
|
||||
return {
|
||||
// 遮罩层
|
||||
|
@ -141,42 +207,30 @@
|
|||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 20,
|
||||
projectId: null
|
||||
projectId: null,
|
||||
},
|
||||
// 表单参数
|
||||
form: {},
|
||||
// 表单校验
|
||||
rules: {
|
||||
deptId: [
|
||||
{ required: true, message: "请选择所属单位", trigger: "blur" }
|
||||
],
|
||||
jobType: [
|
||||
{ required: true, message: "请选择职务类型", trigger: "blur" }
|
||||
],
|
||||
userIds: [
|
||||
{ required: true, message: "请选择项目人员", trigger: "blur" }
|
||||
]
|
||||
}
|
||||
}
|
||||
deptId: [{ required: true, message: "请选择所属单位", trigger: "blur" }],
|
||||
jobType: [{ required: true, message: "请选择职务类型", trigger: "blur" }],
|
||||
userIds: [{ required: true, message: "请选择项目人员", trigger: "blur" }],
|
||||
},
|
||||
};
|
||||
},
|
||||
computed: {},
|
||||
watch: {
|
||||
formData: {
|
||||
handler(value) {
|
||||
this.formData = value
|
||||
this.formData = value;
|
||||
},
|
||||
immediate: true
|
||||
}
|
||||
immediate: true,
|
||||
},
|
||||
created() {
|
||||
|
||||
},
|
||||
mounted() {
|
||||
|
||||
},
|
||||
beforeDestroy() {
|
||||
|
||||
},
|
||||
created() {},
|
||||
mounted() {},
|
||||
beforeDestroy() {},
|
||||
methods: {
|
||||
onOpen() {
|
||||
this.getList();
|
||||
|
@ -184,10 +238,10 @@
|
|||
onClose() {},
|
||||
/** 查询项目人员列表 */
|
||||
getList() {
|
||||
if(this.formData.projectId){
|
||||
if (this.formData.projectId) {
|
||||
this.loading = true;
|
||||
this.queryParams.projectId = this.formData.projectId;
|
||||
listSurProjectUserInfo(this.queryParams).then(response => {
|
||||
listSurProjectUserInfo(this.queryParams).then((response) => {
|
||||
this.surProjectUserInfoList = response.rows;
|
||||
this.total = response.total;
|
||||
this.loading = false;
|
||||
|
@ -196,9 +250,9 @@
|
|||
},
|
||||
// 多选框选中数据
|
||||
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;
|
||||
},
|
||||
// 表单重置
|
||||
reset() {
|
||||
|
@ -215,18 +269,18 @@
|
|||
createTime: null,
|
||||
updateBy: null,
|
||||
updateTime: null,
|
||||
remark: null
|
||||
remark: null,
|
||||
};
|
||||
this.userIds= [];
|
||||
this.userOptions=[];
|
||||
this.userIds = [];
|
||||
this.userOptions = [];
|
||||
this.resetForm("form");
|
||||
},
|
||||
/** 新增按钮操作 */
|
||||
handleAdd() {
|
||||
this.reset();
|
||||
this.getDeptTree();
|
||||
this.form.projectId=this.formData.projectId;
|
||||
this.form.projectName=this.formData.projectName;
|
||||
this.form.projectId = this.formData.projectId;
|
||||
this.form.projectName = this.formData.projectName;
|
||||
this.open = true;
|
||||
this.title = "添加项目人员";
|
||||
},
|
||||
|
@ -238,16 +292,16 @@
|
|||
// 获取单位列表
|
||||
getDeptTree() {
|
||||
//获取单位列表的接口
|
||||
this.$api.publics.getDeptTree().then(response => {
|
||||
this.$api.publics.getDeptTree().then((response) => {
|
||||
this.deptOptions = response.data;
|
||||
})
|
||||
});
|
||||
},
|
||||
// 单位改变数据
|
||||
deptChange(note){
|
||||
this.userIds=[];
|
||||
this.userOptions=[];
|
||||
this.form.userIds=[];
|
||||
if(note&¬e.id){
|
||||
deptChange(note) {
|
||||
this.userIds = [];
|
||||
this.userOptions = [];
|
||||
this.form.userIds = [];
|
||||
if (note && note.id) {
|
||||
this.form.deptId = note.id;
|
||||
this.getUserList(note.id);
|
||||
}
|
||||
|
@ -256,27 +310,27 @@
|
|||
getUserList(id) {
|
||||
this.loading = true;
|
||||
let param = {
|
||||
id:this.form.projectId,
|
||||
deptId: this.form.deptId
|
||||
}
|
||||
id: this.form.projectId,
|
||||
deptId: this.form.deptId,
|
||||
};
|
||||
//获取人员列表的接口
|
||||
findUserByDeptId(param).then(response => {
|
||||
findUserByDeptId(param).then((response) => {
|
||||
this.loading = false;
|
||||
this.userOptions = response.rows
|
||||
})
|
||||
this.userOptions = response.rows;
|
||||
});
|
||||
},
|
||||
/** 提交按钮 */
|
||||
submitForm() {
|
||||
this.$refs["form"].validate(valid => {
|
||||
this.$refs["form"].validate((valid) => {
|
||||
if (valid) {
|
||||
if (this.form.id != null) {
|
||||
updateSurProjectUserInfo(this.form).then(response => {
|
||||
updateSurProjectUserInfo(this.form).then((response) => {
|
||||
this.$modal.msgSuccess("修改成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
} else {
|
||||
addSurProjectUserInfo(this.form).then(response => {
|
||||
addSurProjectUserInfo(this.form).then((response) => {
|
||||
this.$modal.msgSuccess("添加成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
|
@ -286,10 +340,10 @@
|
|||
});
|
||||
},
|
||||
// 改变职务类型
|
||||
changeJobType(row,val){
|
||||
changeJobType(row, val) {
|
||||
this.form.id = row.id;
|
||||
this.form.jobType = val;
|
||||
updateSurProjectUserInfo(this.form).then(response => {
|
||||
updateSurProjectUserInfo(this.form).then((response) => {
|
||||
this.$modal.msgSuccess("修改成功");
|
||||
this.getList();
|
||||
});
|
||||
|
@ -297,25 +351,29 @@
|
|||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
const ids = row.id || this.ids;
|
||||
this.$modal.confirm('是否确认删除项目人员编号为"' + ids + '"的数据项?').then(function() {
|
||||
this.$modal
|
||||
.confirm('是否确认删除项目人员编号为"' + ids + '"的数据项?')
|
||||
.then(function () {
|
||||
return delSurProjectUserInfo(ids);
|
||||
}).then(() => {
|
||||
})
|
||||
.then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess("删除成功");
|
||||
}).catch(() => {});
|
||||
})
|
||||
.catch(() => {});
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
@import '@/styles/mixin.scss';
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
@import "@/styles/mixin.scss";
|
||||
|
||||
::v-deep .el-drawer__header {
|
||||
::v-deep .el-drawer__header {
|
||||
display: none;
|
||||
}
|
||||
@include action-bar;
|
||||
}
|
||||
@include action-bar;
|
||||
|
||||
.json-editor{
|
||||
.json-editor {
|
||||
height: calc(100vh - 33px);
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -61,7 +61,7 @@ spring:
|
|||
servlet:
|
||||
multipart:
|
||||
# 单个文件大小
|
||||
max-file-size: 500MB
|
||||
max-file-size: 100MB
|
||||
# 设置总上传的文件大小
|
||||
max-request-size: 500MB
|
||||
# 服务模块
|
||||
|
|
|
@ -34,7 +34,7 @@ public class SurProjectMaterialSeal extends BaseEntity
|
|||
|
||||
/** 图片集合 */
|
||||
@Excel(name = "图片集合")
|
||||
private String imgUrls;
|
||||
private String imageUrls;
|
||||
|
||||
/** 封样名称 */
|
||||
@Excel(name = "封样名称")
|
||||
|
@ -108,14 +108,14 @@ public class SurProjectMaterialSeal extends BaseEntity
|
|||
{
|
||||
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)
|
||||
{
|
||||
|
@ -213,7 +213,7 @@ public class SurProjectMaterialSeal extends BaseEntity
|
|||
.append("projectId", getProjectId())
|
||||
.append("deptId", getDeptId())
|
||||
.append("mainImage", getMainImage())
|
||||
.append("imgUrls", getImgUrls())
|
||||
.append("imageUrls", getImageUrls())
|
||||
.append("materialName", getMaterialName())
|
||||
.append("usePosition", getUsePosition())
|
||||
.append("contractBrand", getContractBrand())
|
||||
|
|
|
@ -55,6 +55,8 @@ public class SurProjectUnitInfo extends BaseEntity
|
|||
/** 删除状态(0 未删除 1 已删除) */
|
||||
private Long delFlag;
|
||||
|
||||
private List<Long> unitTypes;
|
||||
|
||||
private String unitTypeName;
|
||||
|
||||
private List<SurProjectUserinfo> userinfoList;
|
||||
|
@ -172,6 +174,14 @@ public class SurProjectUnitInfo extends BaseEntity
|
|||
this.userinfoList = userinfoList;
|
||||
}
|
||||
|
||||
public List<Long> getUnitTypes() {
|
||||
return unitTypes;
|
||||
}
|
||||
|
||||
public void setUnitTypes(List<Long> unitTypes) {
|
||||
this.unitTypes = unitTypes;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
package com.yanzhu.jh.project.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
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,6 +55,8 @@ public class SurProjectMaterialSealServiceImpl implements ISurProjectMaterialSea
|
|||
@Override
|
||||
public int insertSurProjectMaterialSeal(SurProjectMaterialSeal surProjectMaterialSeal)
|
||||
{
|
||||
surProjectMaterialSeal.setIsDel(PublicStateEnum.OK.getCode());
|
||||
surProjectMaterialSeal.setMainImage(surProjectMaterialSeal.getImageUrls().split(",")[0]);
|
||||
surProjectMaterialSeal.setCreateBy(SecurityUtils.getUsername());
|
||||
surProjectMaterialSeal.setCreateTime(DateUtils.getNowDate());
|
||||
return surProjectMaterialSealMapper.insertSurProjectMaterialSeal(surProjectMaterialSeal);
|
||||
|
@ -67,6 +71,7 @@ public class SurProjectMaterialSealServiceImpl implements ISurProjectMaterialSea
|
|||
@Override
|
||||
public int updateSurProjectMaterialSeal(SurProjectMaterialSeal surProjectMaterialSeal)
|
||||
{
|
||||
surProjectMaterialSeal.setMainImage(surProjectMaterialSeal.getImageUrls().split(",")[0]);
|
||||
surProjectMaterialSeal.setUpdateBy(SecurityUtils.getUsername());
|
||||
surProjectMaterialSeal.setUpdateTime(DateUtils.getNowDate());
|
||||
return surProjectMaterialSealMapper.updateSurProjectMaterialSeal(surProjectMaterialSeal);
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
package com.yanzhu.jh.project.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
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,6 +55,8 @@ public class SurProjectMeasureServiceImpl implements ISurProjectMeasureService
|
|||
@Override
|
||||
public int insertSurProjectMeasure(SurProjectMeasure surProjectMeasure)
|
||||
{
|
||||
surProjectMeasure.setMainImage(surProjectMeasure.getImageUrls().split(",")[0]);
|
||||
surProjectMeasure.setIsDel(PublicStateEnum.OK.getCode());
|
||||
surProjectMeasure.setCreateBy(SecurityUtils.getUsername());
|
||||
surProjectMeasure.setCreateTime(DateUtils.getNowDate());
|
||||
return surProjectMeasureMapper.insertSurProjectMeasure(surProjectMeasure);
|
||||
|
@ -67,6 +71,7 @@ public class SurProjectMeasureServiceImpl implements ISurProjectMeasureService
|
|||
@Override
|
||||
public int updateSurProjectMeasure(SurProjectMeasure surProjectMeasure)
|
||||
{
|
||||
surProjectMeasure.setMainImage(surProjectMeasure.getImageUrls().split(",")[0]);
|
||||
surProjectMeasure.setUpdateBy(SecurityUtils.getUsername());
|
||||
surProjectMeasure.setUpdateTime(DateUtils.getNowDate());
|
||||
return surProjectMeasureMapper.updateSurProjectMeasure(surProjectMeasure);
|
||||
|
|
|
@ -11,7 +11,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<result property="deptId" column="dept_id" />
|
||||
<result property="deptName" column="dept_name" />
|
||||
<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="usePosition" column="use_position" />
|
||||
<result property="contractBrand" column="contract_brand" />
|
||||
|
@ -28,7 +28,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
</resultMap>
|
||||
|
||||
<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 sys_dept sd on sd.dept_id = spme.dept_id
|
||||
</sql>
|
||||
|
@ -43,7 +43,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
and spme.is_del='0'
|
||||
<if test="projectId != null "> and spme.project_id = #{projectId}</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="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>
|
||||
|
@ -63,7 +63,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
|
||||
<select id="selectSurProjectMaterialSealById" parameterType="Long" resultMap="SurProjectMaterialSealResult">
|
||||
<include refid="selectSurProjectMaterialSealVo"/>
|
||||
where id = #{id}
|
||||
where spme.id = #{id}
|
||||
</select>
|
||||
|
||||
<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="deptId != null">dept_id,</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="usePosition != null">use_position,</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="deptId != null">#{deptId},</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="usePosition != null">#{usePosition},</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="deptId != null">dept_id = #{deptId},</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="usePosition != null">use_position = #{usePosition},</if>
|
||||
<if test="contractBrand != null">contract_brand = #{contractBrand},</if>
|
||||
|
|
|
@ -32,7 +32,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
</resultMap>
|
||||
|
||||
<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 sys_dept sd on sd.dept_id = spm.dept_id
|
||||
</sql>
|
||||
|
|
|
@ -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="createTime != null "> and spui.createTime = #{createTime}</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>
|
||||
</select>
|
||||
|
||||
|
|
Loading…
Reference in New Issue